diff options
| -rw-r--r-- | src/Fl_cocoa.mm | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/src/Fl_cocoa.mm b/src/Fl_cocoa.mm index 51c4df245..e837a0fc0 100644 --- a/src/Fl_cocoa.mm +++ b/src/Fl_cocoa.mm @@ -672,15 +672,6 @@ static double do_queued_events( double time = 0.0 ) } 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 untilDate:[NSDate dateWithTimeIntervalSinceNow:time] inMode:NSDefaultRunLoopMode dequeue:YES]; @@ -1142,6 +1133,7 @@ extern "C" { - (void)windowDidDeminiaturize:(NSNotification *)notif; - (void)windowDidMiniaturize:(NSNotification *)notif; - (void)windowWillClose:(NSNotification *)notif; +- (void)anywindowwillclosenotif:(NSNotification *)notif; - (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication*)sender; - (void)applicationDidBecomeActive:(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 { fl_lock_function(); @@ -1423,6 +1427,11 @@ void fl_open_display() { }; EventHandlerUPP textHandler = NewEventHandlerUPP( carbonTextHandler ); InstallEventHandler(GetEventDispatcherTarget(), textHandler, 1, textEvents, NULL, 0L); + + [[NSNotificationCenter defaultCenter] addObserver:mydelegate + selector:@selector(anywindowwillclosenotif:) + name:NSWindowWillCloseNotification + object:nil]; } } |
