|
@@ -311,15 +311,26 @@ static void Cocoa_DispatchEvent(NSEvent *theEvent)
|
|
|
|
|
|
- (void)applicationDidFinishLaunching:(NSNotification *)notification
|
|
- (void)applicationDidFinishLaunching:(NSNotification *)notification
|
|
{
|
|
{
|
|
- if (!SDL_GetHintBoolean("SDL_MAC_REGISTER_ACTIVATION_HANDLERS", true))
|
|
|
|
|
|
+ if (!SDL_GetHintBoolean("SDL_MAC_REGISTER_ACTIVATION_HANDLERS", true)) {
|
|
return;
|
|
return;
|
|
|
|
+ }
|
|
|
|
|
|
/* The menu bar of SDL apps which don't have the typical .app bundle
|
|
/* The menu bar of SDL apps which don't have the typical .app bundle
|
|
* structure fails to work the first time a window is created (until it's
|
|
* structure fails to work the first time a window is created (until it's
|
|
* de-focused and re-focused), if this call is in Cocoa_RegisterApp instead
|
|
* de-focused and re-focused), if this call is in Cocoa_RegisterApp instead
|
|
- * of here. https://bugzilla.libsdl.org/show_bug.cgi?id=3051
|
|
|
|
|
|
+ * of here. https://github.com/libsdl-org/SDL/issues/1913
|
|
*/
|
|
*/
|
|
- if (!SDL_GetHintBoolean(SDL_HINT_MAC_BACKGROUND_APP, false)) {
|
|
|
|
|
|
+
|
|
|
|
+ /* this apparently became unnecessary on macOS 14.0, and will addition pop up a
|
|
|
|
+ hidden dock if you're moving the mouse during launch, so change the default
|
|
|
|
+ behaviour there. https://github.com/libsdl-org/SDL/issues/10340
|
|
|
|
+ (13.6 still needs it, presumably 13.7 does, too.) */
|
|
|
|
+ bool background_app_default = false;
|
|
|
|
+ if (@available(macOS 14.0, *)) {
|
|
|
|
+ background_app_default = true; /* by default, don't explicitly activate the dock and then us again to force to foreground */
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (!SDL_GetHintBoolean(SDL_HINT_MAC_BACKGROUND_APP, background_app_default)) {
|
|
// Get more aggressive for Catalina: activate the Dock first so we definitely reset all activation state.
|
|
// Get more aggressive for Catalina: activate the Dock first so we definitely reset all activation state.
|
|
for (NSRunningApplication *i in [NSRunningApplication runningApplicationsWithBundleIdentifier:@"com.apple.dock"]) {
|
|
for (NSRunningApplication *i in [NSRunningApplication runningApplicationsWithBundleIdentifier:@"com.apple.dock"]) {
|
|
[i activateWithOptions:NSApplicationActivateIgnoringOtherApps];
|
|
[i activateWithOptions:NSApplicationActivateIgnoringOtherApps];
|