Browse Source

SDL
- add a new SDL_HINT_MAC_BACKGROUND_APP hint, when set or set to 1 don't force the app to be foreground

Alfred Reynolds 9 years ago
parent
commit
628d8edb95
2 changed files with 20 additions and 9 deletions
  1. 8 0
      include/SDL_hints.h
  2. 12 9
      src/video/cocoa/SDL_cocoaevents.m

+ 8 - 0
include/SDL_hints.h

@@ -525,6 +525,14 @@ extern "C" {
  */
 #define SDL_HINT_VIDEO_MAC_FULLSCREEN_SPACES    "SDL_VIDEO_MAC_FULLSCREEN_SPACES"
 
+/**
+*  \brief  When set don't force the SDL app to become a foreground process
+*
+*  This hint only applies to Mac OS X.
+*
+*/
+#define SDL_HINT_MAC_BACKGROUND_APP    "SDL_MAC_BACKGROUND_APP"
+    
 /**
  * \brief Android APK expansion main file version. Should be a string number like "1", "2" etc.
  */

+ 12 - 9
src/video/cocoa/SDL_cocoaevents.m

@@ -26,6 +26,7 @@
 #include "SDL_cocoavideo.h"
 #include "../../events/SDL_events_c.h"
 #include "SDL_assert.h"
+#include "SDL_hints.h"
 
 /* This define was added in the 10.9 SDK. */
 #ifndef kIOPMAssertPreventUserIdleDisplaySleep
@@ -318,19 +319,21 @@ Cocoa_RegisterApp(void)
         [SDLApplication sharedApplication];
         SDL_assert(NSApp != nil);
 
+        const char *hint = SDL_GetHint(SDL_HINT_MAC_BACKGROUND_APP);
+		if (!hint && *hint != '0') {
 #if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_6
-        if ([NSApp respondsToSelector:@selector(setActivationPolicy:)]) {
+			if ([NSApp respondsToSelector:@selector(setActivationPolicy:)]) {
 #endif
-            [NSApp setActivationPolicy:NSApplicationActivationPolicyRegular];
+				[NSApp setActivationPolicy:NSApplicationActivationPolicyRegular];
 #if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_6
-        } else {
-            ProcessSerialNumber psn = {0, kCurrentProcess};
-            TransformProcessType(&psn, kProcessTransformToForegroundApplication);
-        }
+			} else {
+				ProcessSerialNumber psn = {0, kCurrentProcess};
+				TransformProcessType(&psn, kProcessTransformToForegroundApplication);
+			}
 #endif
-
-        [NSApp activateIgnoringOtherApps:YES];
-
+            [NSApp activateIgnoringOtherApps:YES];
+		}
+		
         if ([NSApp mainMenu] == nil) {
             CreateApplicationMenus();
         }