diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/Fl_cocoa.mm | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/Fl_cocoa.mm b/src/Fl_cocoa.mm index 3aeea9e9c..934dd2f78 100644 --- a/src/Fl_cocoa.mm +++ b/src/Fl_cocoa.mm @@ -3186,15 +3186,17 @@ void Fl_Cocoa_Window_Driver::fullscreen_off(int X, int Y, int W, int H) { NSInteger level = NSNormalWindowLevel; if (pWindow->modal()) level = modal_window_level(); else if (pWindow->non_modal()) level = non_modal_window_level(); + /* Hide (orderOut) and later show (orderFront) the window to avoid a crash that + occurs in a very specific situation: the dock is at bottom and + H is larger than the maximum value for the display. + See "Crashing regression in MacOS code" in fltk.coredev. + */ + [nswin orderOut:nil]; [nswin setLevel:level]; [nswin setStyleMask:calc_win_style(pWindow)]; //10.6 restore_window_title_and_icon(pWindow, icon_image); pWindow->resize(X, Y, W, H); - // at least under macOS 10.15.5-6, NSViewFrameDidChangeNotification is not sent - // if the dock is at bottom (but is sent if the dock is at left!) - NSNotification *notif = [NSNotification notificationWithName:NSViewFrameDidChangeNotification - object:[nswin contentView]]; - [[FLWindowDelegate singleInstance] view_did_resize:notif]; + [nswin orderFront:nil]; } else #endif { |
