From 433f9b8ccb8264390b54bf831a2fbbce72dc6f50 Mon Sep 17 00:00:00 2001 From: ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> Date: Sat, 8 Dec 2018 19:38:15 +0100 Subject: macOS Mojave: fix window with subwindow created in iconized form - continued Some more changes needed to keep support of MacOS < 10.5 --- src/Fl_cocoa.mm | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/Fl_cocoa.mm b/src/Fl_cocoa.mm index 72d7030b4..606bf33df 100644 --- a/src/Fl_cocoa.mm +++ b/src/Fl_cocoa.mm @@ -1146,6 +1146,7 @@ static FLTextView *fltextview_instance = nil; - (void)windowDidBecomeKey:(NSNotification *)notif; - (void)windowDidBecomeMain:(NSNotification *)notif; - (void)windowDidDeminiaturize:(NSNotification *)notif; +- (void)fl_windowMiniaturize:(NSNotification *)notif; - (void)windowDidMiniaturize:(NSNotification *)notif; - (BOOL)windowShouldClose:(id)fl; - (void)anyWindowWillClose:(NSNotification *)notif; @@ -1194,7 +1195,7 @@ static void orderfront_subwindows(FLWindow *xid) } -(void)windowWillMiniaturize:(NSNotification *)notif { - [super windowWillMiniaturize:notif]; + [super fl_windowMiniaturize:notif]; NSArray *children = [(NSWindow*)[notif object] childWindows]; // 10.2 NSEnumerator *enumerator = [children objectEnumerator]; id child; @@ -1354,13 +1355,13 @@ static FLWindowDelegate *flwindowdelegate_instance = nil; Fl::flush(); // Process redraws set by FL_SHOW. fl_unlock_function(); } -- (void)windowDidMiniaturize:(NSNotification *)notif +- (void)fl_windowMiniaturize:(NSNotification *)notif { // subwindows are not captured in system-built miniature window image fl_lock_function(); FLWindow *nsw = (FLWindow*)[notif object]; - Fl_Window *window = [nsw getFl_Window]; if ([[nsw childWindows] count]) { + Fl_Window *window = [nsw getFl_Window]; // capture the window and its subwindows and use as miniature window image NSBitmapImageRep *bitmap = rect_to_NSBitmapImageRep(window, 0, 0, window->w(), window->h()); if (bitmap) { @@ -1370,6 +1371,14 @@ static FLWindowDelegate *flwindowdelegate_instance = nil; [nsw setMiniwindowImage:img]; } } + fl_unlock_function(); +} +- (void)windowDidMiniaturize:(NSNotification *)notif +{ + if (fl_mac_os_version >= 100500) [self fl_windowMiniaturize:notif]; + fl_lock_function(); + FLWindow *nsw = (FLWindow*)[notif object]; + Fl_Window *window = [nsw getFl_Window]; Fl::handle(FL_HIDE, window); fl_unlock_function(); } -- cgit v1.2.3