macOS: Restore fullscreen window mode when using SDK < 10.7 (#1192)

This commit is contained in:
ManoloFLTK
2025-02-03 15:25:05 +01:00
parent af5b2cf464
commit 02f431bd88
+12 -11
View File
@@ -3297,23 +3297,24 @@ void Fl_Cocoa_Window_Driver::makeWindow()
} }
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7
static BOOL fullscreen_screen_border = NO; // YES means the multi-screened window had a border before static BOOL fullscreen_screen_border = NO; // YES means the multi-screened window had a border before
#endif
static NSUInteger calc_win_style(Fl_Window *win); static NSUInteger calc_win_style(Fl_Window *win);
void Fl_Cocoa_Window_Driver::fullscreen_on() { void Fl_Cocoa_Window_Driver::fullscreen_on() {
pWindow->_set_fullscreen();
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6 #if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6
# if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7
bool has_border = pWindow->border(); bool has_border = pWindow->border();
if (fl_mac_os_version >= 100700 && fullscreen_screen_top() >= 0 && has_border) { if (fl_mac_os_version >= 100700 && fullscreen_screen_top() >= 0 && has_border) {
fullscreen_screen_border = YES; fullscreen_screen_border = YES;
has_border = false; has_border = false;
} }
#endif
pWindow->_set_fullscreen();
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6
if (fl_mac_os_version >= 100700 && has_border) { if (fl_mac_os_version >= 100700 && has_border) {
# if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7
NSWindow *nswin = fl_xid(pWindow); NSWindow *nswin = fl_xid(pWindow);
# if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_13 # if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_13
if (fl_mac_os_version >= 101300) { if (fl_mac_os_version >= 101300) {
@@ -3328,8 +3329,9 @@ void Fl_Cocoa_Window_Driver::fullscreen_on() {
pWindow->_set_fullscreen(); pWindow->_set_fullscreen();
} }
[nswin toggleFullScreen:nil]; [nswin toggleFullScreen:nil];
} else
# endif # endif
} else if (fl_mac_os_version >= 100600) { if (fl_mac_os_version >= 100600) {
FLWindow *nswin = fl_xid(pWindow); FLWindow *nswin = fl_xid(pWindow);
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7 #if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7
if (fl_mac_os_version >= 100700 && (nswin.styleMask & NSWindowStyleMaskFullScreen)) { if (fl_mac_os_version >= 100700 && (nswin.styleMask & NSWindowStyleMaskFullScreen)) {
@@ -3429,12 +3431,8 @@ void Fl_Cocoa_Window_Driver::fullscreen_off(int X, int Y, int W, int H) {
NSWindow *nswin = fl_xid(pWindow); NSWindow *nswin = fl_xid(pWindow);
pWindow->_clear_fullscreen(); pWindow->_clear_fullscreen();
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6 #if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6
if (fl_mac_os_version >= 100700
# if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7
&& ([nswin styleMask] & NSWindowStyleMaskFullScreen)
# endif
) {
# if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7 # if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7
if (fl_mac_os_version >= 100700 && ([nswin styleMask] & NSWindowStyleMaskFullScreen)) {
# if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_13 # if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_13
if (fl_mac_os_version >= 101300) { if (fl_mac_os_version >= 101300) {
NSWindow *active_tab = [[nswin tabGroup] selectedWindow]; NSWindow *active_tab = [[nswin tabGroup] selectedWindow];
@@ -3443,8 +3441,9 @@ void Fl_Cocoa_Window_Driver::fullscreen_off(int X, int Y, int W, int H) {
# endif # endif
[nswin toggleFullScreen:nil]; [nswin toggleFullScreen:nil];
pWindow->resize(*no_fullscreen_x(), *no_fullscreen_y(), *no_fullscreen_w(), *no_fullscreen_h()); pWindow->resize(*no_fullscreen_x(), *no_fullscreen_y(), *no_fullscreen_w(), *no_fullscreen_h());
} else
# endif # endif
} else if (fl_mac_os_version >= 100600) { if (fl_mac_os_version >= 100600) {
// Transition from multi-screen fullscreen mode to normal mode // Transition from multi-screen fullscreen mode to normal mode
NSInteger level = NSNormalWindowLevel; NSInteger level = NSNormalWindowLevel;
if (pWindow->modal()) level = modal_window_level(); if (pWindow->modal()) level = modal_window_level();
@@ -3471,7 +3470,9 @@ void Fl_Cocoa_Window_Driver::fullscreen_off(int X, int Y, int W, int H) {
pWindow->show(); pWindow->show();
} }
Fl::handle(FL_FULLSCREEN, pWindow); Fl::handle(FL_FULLSCREEN, pWindow);
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7
fullscreen_screen_border = NO; fullscreen_screen_border = NO;
#endif
} }