]> git.ipfire.org Git - thirdparty/wireguard-apple.git/commitdiff
macOS: Workaround for unresponsive main menu when launched from Xcode
authorRoopesh Chander <roop@roopc.net>
Wed, 22 May 2019 14:08:15 +0000 (19:38 +0530)
committerRoopesh Chander <roop@roopc.net>
Wed, 22 May 2019 14:22:21 +0000 (19:52 +0530)
Signed-off-by: Roopesh Chander <roop@roopc.net>
WireGuard/WireGuard/UI/macOS/AppDelegate.swift

index 453a152a096ad69895a01f5e40694f2e686d4bcd..d7a088bda7edcf8c84e1212725a236492327a7e8 100644 (file)
@@ -15,6 +15,16 @@ class AppDelegate: NSObject, NSApplicationDelegate {
     var manageTunnelsWindowObject: NSWindow?
     var onAppDeactivation: (() -> Void)?
 
+    func applicationWillFinishLaunching(_ notification: Notification) {
+        // To workaround a possible AppKit bug that causes the main menu to become unresponsive sometimes
+        // (especially when launched through Xcode) if we call setActivationPolicy(.regular) in
+        // in applicationDidFinishLaunching, we set it to .prohibited here.
+        // Setting it to .regular would fix that problem too, but at this point, we don't know
+        // whether the app was launched at login or not, so we're not sure whether we should
+        // show the app icon in the dock or not.
+        NSApp.setActivationPolicy(.prohibited)
+    }
+
     func applicationDidFinishLaunching(_ aNotification: Notification) {
         Logger.configureGlobal(tagged: "APP", withFilePath: FileManager.logFileURL?.path)
         registerLoginItem(shouldLaunchAtLogin: true)
@@ -24,10 +34,8 @@ class AppDelegate: NSObject, NSApplicationDelegate {
             isLaunchedAtLogin = LaunchedAtLoginDetector.isLaunchedAtLogin(openAppleEvent: appleEvent)
         }
 
-        if !isLaunchedAtLogin {
-            setDockIconAndMainMenuVisibility(isVisible: true)
-        }
         NSApp.mainMenu = MainMenu()
+        setDockIconAndMainMenuVisibility(isVisible: !isLaunchedAtLogin)
 
         TunnelsManager.create { [weak self] result in
             guard let self = self else { return }