mirror of
https://github.com/fltk/fltk.git
synced 2026-05-22 07:01:34 +08:00
Fix for "Crashing regression in MacOS code" in fltk.coredev.
This commit is contained in:
+7
-5
@@ -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
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user