From 8b118674643b199fc28d11dc22039ffe528970b3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Camilla=20L=C3=B6wy?= <elmindreda@glfw.org>
Date: Tue, 8 Dec 2020 23:23:20 +0100
Subject: [PATCH] Cocoa: Fix menubar for unbundled apps on 10.15

NSApp setActivationPolicy: was being called too soon when the app was
not bundled and launched from the command line.

This fix is based on #1802 by @richardwilkes.

Fixes #1648.
Closes #1802.
---
 README.md        | 3 +++
 src/cocoa_init.m | 6 +++---
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/README.md b/README.md
index 5e06e990..5b76f5bb 100644
--- a/README.md
+++ b/README.md
@@ -179,6 +179,8 @@ information on what to include when reporting a bug.
    could leak memory
  - [Cocoa] Bugfix: Objective-C files were compiled as C with CMake 3.19 (#1787)
  - [Cocoa] Bugfix: Duplicate video modes were not filtered out (#1830)
+ - [Cocoa] Bugfix: Menubar was not clickable on macOS 10.15+ until it lost and
+   regained focus (#1648,#1802)
  - [X11] Bugfix: The CMake files did not check for the XInput headers (#1480)
  - [X11] Bugfix: Key names were not updated when the keyboard layout changed
    (#1462,#1528)
@@ -441,6 +443,7 @@ skills.
  - Frank Wille
  - Andy Williams
  - Joel Winarske
+ - Richard A. Wilkes
  - Tatsuya Yatagawa
  - Ryogo Yoshimura
  - Lukas Zanner
diff --git a/src/cocoa_init.m b/src/cocoa_init.m
index edd174be..88decab6 100644
--- a/src/cocoa_init.m
+++ b/src/cocoa_init.m
@@ -428,9 +428,6 @@ static GLFWbool initializeTIS(void)
 {
     if (_glfw.hints.init.ns.menubar)
     {
-        // In case we are unbundled, make us a proper UI application
-        [NSApp setActivationPolicy:NSApplicationActivationPolicyRegular];
-
         // Menu bar setup must go between sharedApplication and finishLaunching
         // in order to properly emulate the behavior of NSApplicationMain
 
@@ -557,6 +554,9 @@ int _glfwPlatformInit(void)
     if (![[NSRunningApplication currentApplication] isFinishedLaunching])
         [NSApp run];
 
+    // In case we are unbundled, make us a proper UI application
+    [NSApp setActivationPolicy:NSApplicationActivationPolicyRegular];
+
     return GLFW_TRUE;
 
     } // autoreleasepool