Fix for "Crashing regression in MacOS code" in fltk.coredev.

This commit is contained in:
ManoloFLTK
2020-07-27 17:04:16 +02:00
parent e3270a6032
commit b40e218c01
+7 -5
View File
@@ -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
{