From fb5c6c48113753e80f0ee0d13171d5264a635167 Mon Sep 17 00:00:00 2001 From: Stephens Nunnally <43077547+stevinz@users.noreply.github.com> Date: Tue, 20 Apr 2021 13:56:44 -0400 Subject: MacOS main menu bar activation fix. On MacOS 10.14.6, after implementing a quit menu item (seen in pull request #362, https://github.com/floooh/sokol/pull/362) and subsequently additional menu items, I found that upon initial App launch the Apple menu and the App's menus in the main menu bar do not respond to mouse clicks. Switching away from the App and then back again resolves the issue. I found others having the same issue (with Swift, not Sokol App) on stack overflow along with a fix: (https://stackoverflow.com/questions/62739862/why-doesnt-activateignoringotherapps-enable-the-menu-bar). Moving the App activation to applicationDidFinishLaunching() seems to work great, after this change, the menus are clickable from first launch. --- sokol_app.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sokol_app.h b/sokol_app.h index cfbca133..473c184c 100644 --- a/sokol_app.h +++ b/sokol_app.h @@ -2824,10 +2824,8 @@ _SOKOL_PRIVATE void _sapp_macos_run(const sapp_desc* desc) { // set the application dock icon as early as possible, otherwise // the dummy icon will be visible for a short time sapp_set_icon(&_sapp.desc.icon); - NSApp.activationPolicy = NSApplicationActivationPolicyRegular; _sapp.macos.app_dlg = [[_sapp_macos_app_delegate alloc] init]; NSApp.delegate = _sapp.macos.app_dlg; - [NSApp activateIgnoringOtherApps:YES]; [NSApp run]; // NOTE: [NSApp run] never returns, instead cleanup code // must be put into applicationWillTerminate @@ -3170,6 +3168,8 @@ _SOKOL_PRIVATE void _sapp_macos_frame(void) { else { [_sapp.macos.window center]; } + NSApp.activationPolicy = NSApplicationActivationPolicyRegular; + [NSApp activateIgnoringOtherApps:YES]; [_sapp.macos.window makeKeyAndOrderFront:nil]; _sapp_macos_update_dimensions(); [NSEvent setMouseCoalescingEnabled:NO]; -- cgit v1.2.3