From fb071a4cd9a06cf1c9d5ed40aef7c5bf4e8430ce Mon Sep 17 00:00:00 2001 From: Alex Szpakowski Date: Mon, 25 Sep 2017 20:49:31 -0300 Subject: [PATCH] Mac: Fix the menu bar not always working for non-.app-bundled apps. Fixes bug #3051. --- src/video/cocoa/SDL_cocoaevents.m | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/video/cocoa/SDL_cocoaevents.m b/src/video/cocoa/SDL_cocoaevents.m index e428e4374..98bdf8754 100644 --- a/src/video/cocoa/SDL_cocoaevents.m +++ b/src/video/cocoa/SDL_cocoaevents.m @@ -216,6 +216,18 @@ static void Cocoa_DispatchEvent(NSEvent *theEvent) { return (BOOL)SDL_SendDropFile(NULL, [filename UTF8String]) && SDL_SendDropComplete(NULL); } + +- (void)applicationDidFinishLaunching:(NSNotification *)notification +{ + /* 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 + * de-focused and re-focused), if this call is in Cocoa_RegisterApp instead + * of here. https://bugzilla.libsdl.org/show_bug.cgi?id=3051 + */ + if (!SDL_GetHintBoolean(SDL_HINT_MAC_BACKGROUND_APP, SDL_FALSE)) { + [NSApp activateIgnoringOtherApps:YES]; + } +} @end static SDLAppDelegate *appDelegate = nil; @@ -361,7 +373,6 @@ Cocoa_RegisterApp(void) if (!SDL_GetHintBoolean(SDL_HINT_MAC_BACKGROUND_APP, SDL_FALSE)) { [NSApp setActivationPolicy:NSApplicationActivationPolicyRegular]; - [NSApp activateIgnoringOtherApps:YES]; } if ([NSApp mainMenu] == nil) {