mirror of
https://github.com/fltk/fltk.git
synced 2026-06-01 06:14:28 +08:00
Improved interaction with non-FLTK windows.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@7946 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
This commit is contained in:
+18
-9
@@ -672,15 +672,6 @@ static double do_queued_events( double time = 0.0 )
|
|||||||
}
|
}
|
||||||
|
|
||||||
fl_unlock_function();
|
fl_unlock_function();
|
||||||
|
|
||||||
// necessary so that after closing a non-FLTK window (e.g., Fl_Native_File_Chooser)
|
|
||||||
// the front window turns key again
|
|
||||||
NSWindow *nsk = [NSApp keyWindow];
|
|
||||||
NSWindow *nsm = [NSApp mainWindow];
|
|
||||||
if ([nsm isMemberOfClass:[FLWindow class]] && (nsk == nil || ( ! [nsk isMemberOfClass:[FLWindow class]] &&
|
|
||||||
! [nsk isVisible] ) ) ) {
|
|
||||||
[nsm makeKeyAndOrderFront:nil];
|
|
||||||
}
|
|
||||||
NSEvent *event = [NSApp nextEventMatchingMask:NSAnyEventMask
|
NSEvent *event = [NSApp nextEventMatchingMask:NSAnyEventMask
|
||||||
untilDate:[NSDate dateWithTimeIntervalSinceNow:time]
|
untilDate:[NSDate dateWithTimeIntervalSinceNow:time]
|
||||||
inMode:NSDefaultRunLoopMode dequeue:YES];
|
inMode:NSDefaultRunLoopMode dequeue:YES];
|
||||||
@@ -1142,6 +1133,7 @@ extern "C" {
|
|||||||
- (void)windowDidDeminiaturize:(NSNotification *)notif;
|
- (void)windowDidDeminiaturize:(NSNotification *)notif;
|
||||||
- (void)windowDidMiniaturize:(NSNotification *)notif;
|
- (void)windowDidMiniaturize:(NSNotification *)notif;
|
||||||
- (void)windowWillClose:(NSNotification *)notif;
|
- (void)windowWillClose:(NSNotification *)notif;
|
||||||
|
- (void)anywindowwillclosenotif:(NSNotification *)notif;
|
||||||
- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication*)sender;
|
- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication*)sender;
|
||||||
- (void)applicationDidBecomeActive:(NSNotification *)notify;
|
- (void)applicationDidBecomeActive:(NSNotification *)notify;
|
||||||
- (void)applicationWillResignActive:(NSNotification *)notify;
|
- (void)applicationWillResignActive:(NSNotification *)notify;
|
||||||
@@ -1218,6 +1210,18 @@ extern "C" {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
- (void)anywindowwillclosenotif:(NSNotification *)notif
|
||||||
|
{
|
||||||
|
// necessary so that after closing a non-FLTK window (e.g., Fl_Native_File_Chooser)
|
||||||
|
// the front window turns key again
|
||||||
|
NSWindow *closing = (NSWindow*)[notif object];
|
||||||
|
if ([closing isMemberOfClass:[FLWindow class]]) return;
|
||||||
|
NSWindow *nsk = [NSApp keyWindow];
|
||||||
|
NSWindow *nsm = [NSApp mainWindow];
|
||||||
|
if ([nsm isMemberOfClass:[FLWindow class]] && nsk == nil) {
|
||||||
|
[nsm makeKeyAndOrderFront:nil];
|
||||||
|
}
|
||||||
|
}
|
||||||
- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication*)sender
|
- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication*)sender
|
||||||
{
|
{
|
||||||
fl_lock_function();
|
fl_lock_function();
|
||||||
@@ -1423,6 +1427,11 @@ void fl_open_display() {
|
|||||||
};
|
};
|
||||||
EventHandlerUPP textHandler = NewEventHandlerUPP( carbonTextHandler );
|
EventHandlerUPP textHandler = NewEventHandlerUPP( carbonTextHandler );
|
||||||
InstallEventHandler(GetEventDispatcherTarget(), textHandler, 1, textEvents, NULL, 0L);
|
InstallEventHandler(GetEventDispatcherTarget(), textHandler, 1, textEvents, NULL, 0L);
|
||||||
|
|
||||||
|
[[NSNotificationCenter defaultCenter] addObserver:mydelegate
|
||||||
|
selector:@selector(anywindowwillclosenotif:)
|
||||||
|
name:NSWindowWillCloseNotification
|
||||||
|
object:nil];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user