From 628d8edb95385a02fcb0941f776fda3442fdb179 Mon Sep 17 00:00:00 2001 From: Alfred Reynolds Date: Wed, 29 Jul 2015 17:19:15 -0700 Subject: [PATCH] SDL - add a new SDL_HINT_MAC_BACKGROUND_APP hint, when set or set to 1 don't force the app to be foreground --- include/SDL_hints.h | 8 ++++++++ src/video/cocoa/SDL_cocoaevents.m | 21 ++++++++++++--------- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/include/SDL_hints.h b/include/SDL_hints.h index 3da3ec3ba239b..5484687633d7f 100644 --- a/include/SDL_hints.h +++ b/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. */ diff --git a/src/video/cocoa/SDL_cocoaevents.m b/src/video/cocoa/SDL_cocoaevents.m index 63056292e6e92..bf15e2ac27739 100644 --- a/src/video/cocoa/SDL_cocoaevents.m +++ b/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 @@ - (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filenam [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(); }