diff options
author | Sven Gothel <[email protected]> | 2013-12-02 05:39:01 +0100 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2013-12-02 05:39:01 +0100 |
commit | 69c334448cfe8af553fd97689137ecf8f996b378 (patch) | |
tree | 5c44459285d4c020fec8dab2541c97a97db8479a /src/newt/native | |
parent | 4cb35d98a1b25fb8347584b0ab6534c7cfc5946c (diff) |
Bug 914: Newt OSX: Don't use exclusive fullscreen mode (captured display) in favor of proper WM incl. ALT-TAB app-switching
Diffstat (limited to 'src/newt/native')
-rw-r--r-- | src/newt/native/MacWindow.m | 13 | ||||
-rw-r--r-- | src/newt/native/NewtMacWindow.h | 3 | ||||
-rw-r--r-- | src/newt/native/NewtMacWindow.m | 21 |
3 files changed, 37 insertions, 0 deletions
diff --git a/src/newt/native/MacWindow.m b/src/newt/native/MacWindow.m index f0ed170f0..3e8935787 100644 --- a/src/newt/native/MacWindow.m +++ b/src/newt/native/MacWindow.m @@ -827,8 +827,21 @@ NS_ENDHANDLER NS_DURING // Available >= 10.5 - Makes the menubar disapear if( fullscreen ) { + /** + * See Bug 914: We don't use exclusive fullscreen anymore (capturing display) + * allowing ALT-TAB to allow process/app switching! + * Shall have no penalty on modern GPU and is also recommended, see bottom box @ + * <https://developer.apple.com/library/mac/documentation/graphicsimaging/Conceptual/QuartzDisplayServicesConceptual/Articles/DisplayCapture.html> + * if ( [myView respondsToSelector:@selector(enterFullScreenMode:withOptions:)] ) { [myView enterFullScreenMode: myScreen withOptions:NULL]; + } */ + if ( 0 != myView->fullscreenPresentationOptions ) { + [NSApp setPresentationOptions: myView->fullscreenPresentationOptions]; + } + } else { + if ( 0 != myView->defaultPresentationOptions ) { + [NSApp setPresentationOptions: myView->defaultPresentationOptions]; } } NS_HANDLER diff --git a/src/newt/native/NewtMacWindow.h b/src/newt/native/NewtMacWindow.h index c9d53f53b..a3bd5c41b 100644 --- a/src/newt/native/NewtMacWindow.h +++ b/src/newt/native/NewtMacWindow.h @@ -64,6 +64,9 @@ volatile NSTrackingRectTag ptrTrackingTag; NSRect ptrRect; NSCursor * myCursor; +@public + NSUInteger defaultPresentationOptions; + NSUInteger fullscreenPresentationOptions; } - (id)initWithFrame:(NSRect)frameRect; diff --git a/src/newt/native/NewtMacWindow.m b/src/newt/native/NewtMacWindow.m index 686e5d2b0..266b63081 100644 --- a/src/newt/native/NewtMacWindow.m +++ b/src/newt/native/NewtMacWindow.m @@ -129,6 +129,27 @@ static jmethodID windowRepaintID = NULL; */ myCursor = NULL; + // OSX 10.6 + if ( [NSApp respondsToSelector:@selector(currentSystemPresentationOptions)] && + [NSApp respondsToSelector:@selector(setPresentationOptions:)] ) { + defaultPresentationOptions = [NSApp currentSystemPresentationOptions]; + fullscreenPresentationOptions = + // NSApplicationPresentationDefault| + // NSApplicationPresentationAutoHideDock| + NSApplicationPresentationHideDock| + // NSApplicationPresentationAutoHideMenuBar| + NSApplicationPresentationHideMenuBar| + NSApplicationPresentationDisableAppleMenu| + // NSApplicationPresentationDisableProcessSwitching| + // NSApplicationPresentationDisableSessionTermination| + NSApplicationPresentationDisableHideApplication| + // NSApplicationPresentationDisableMenuBarTransparency| + 0 ; + } else { + defaultPresentationOptions = 0; + fullscreenPresentationOptions = 0; + } + DBG_PRINT("NewtView::create: %p (refcnt %d)\n", res, (int)[res retainCount]); return res; } |