diff options
Diffstat (limited to 'src/Fl_cocoa.mm')
| -rw-r--r-- | src/Fl_cocoa.mm | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/src/Fl_cocoa.mm b/src/Fl_cocoa.mm index d6ca855f2..fc8269975 100644 --- a/src/Fl_cocoa.mm +++ b/src/Fl_cocoa.mm @@ -3000,6 +3000,48 @@ Fl_X* Fl_Cocoa_Window_Driver::makeWindow() return x; } +void Fl_Cocoa_Window_Driver::fullscreen_on() { + pWindow->_set_fullscreen(); + if (fl_mac_os_version < 101000) { + // On OS X < 10.6, it is necessary to recreate the window. This is done with hide+show. + // The alternative procedure isn't stable until MacOS 10.10 + pWindow->hide(); + pWindow->show(); + } else { + FLWindow *nswin = fl_xid(pWindow); +#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6 + [nswin setStyleMask:NSBorderlessWindowMask]; //10.6 +#endif + [nswin setLevel:NSStatusWindowLevel]; + int X,Y,W,H; + Fl::screen_xywh(X, Y, W, H, x(), y(), w(), h()); + pWindow->resize(X, Y, W, H); + } + Fl::handle(FL_FULLSCREEN, pWindow); +} + +void Fl_Cocoa_Window_Driver::fullscreen_off(int X, int Y, int W, int H) { + pWindow->_clear_fullscreen(); + if (fl_mac_os_version < 101000) { + pWindow->hide(); + pWindow->resize(X, Y, W, H); + pWindow->show(); + } else { + FLWindow *nswin = fl_xid(pWindow); + NSUInteger winstyle = (pWindow->border() ? + (NSTitledWindowMask | NSClosableWindowMask | NSResizableWindowMask) : NSBorderlessWindowMask); + if (!pWindow->modal()) winstyle |= NSMiniaturizableWindowMask; + NSInteger level = NSNormalWindowLevel; + if (pWindow->modal()) level = modal_window_level(); + else if (pWindow->non_modal()) level = non_modal_window_level(); + [nswin setLevel:level]; + pWindow->resize(X, Y, W, H); +#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6 + [nswin setStyleMask:winstyle]; //10.6 +#endif + } + Fl::handle(FL_FULLSCREEN, pWindow); +} /* * Tell the OS what window sizes we want to allow |
