diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/Fl_cocoa.mm | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/src/Fl_cocoa.mm b/src/Fl_cocoa.mm index 07dbaa6b3..c989b8848 100644 --- a/src/Fl_cocoa.mm +++ b/src/Fl_cocoa.mm @@ -1020,16 +1020,15 @@ void fl_open_callback(void (*cb)(const char *)) { - (void)windowWillClose:(NSNotification *)notif { fl_lock_function(); - Fl_Window *w = Fl::first_window(); - if (w) { - NSWindow *cw = (NSWindow*)Fl_X::i(w)->xid; - if ( ![cw isMiniaturized] && ([cw styleMask] & NSTitledWindowMask) ) { - if (![cw isKeyWindow]) { // always make Fl::first_window() the key widow - [cw makeKeyAndOrderFront:nil]; - } - if (![cw isMainWindow]) { // always make Fl::first_window() the main widow - [cw makeMainWindow]; + if ([[notif object] isKeyWindow]) { + // If the closing window is the key window, + // find a bordered top-level window to become the new key window + Fl_Window *w = Fl::first_window(); + while (w && (w->parent() || !w->border() || !w->visible())) { + w = Fl::next_window(w); } + if (w) { + [(FLWindow*)Fl_X::i(w)->xid makeKeyAndOrderFront:nil]; } } fl_unlock_function(); |
