summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2013-12-02 05:39:01 +0100
committerSven Gothel <[email protected]>2013-12-02 05:39:01 +0100
commit69c334448cfe8af553fd97689137ecf8f996b378 (patch)
tree5c44459285d4c020fec8dab2541c97a97db8479a /src
parent4cb35d98a1b25fb8347584b0ab6534c7cfc5946c (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')
-rw-r--r--src/newt/native/MacWindow.m13
-rw-r--r--src/newt/native/NewtMacWindow.h3
-rw-r--r--src/newt/native/NewtMacWindow.m21
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;
}