]> git.ipfire.org Git - thirdparty/wireguard-apple.git/commitdiff
macOS: Show open panel as sheet on manage window
authorRoopesh Chander <roop@roopc.net>
Thu, 3 Jan 2019 14:13:52 +0000 (19:43 +0530)
committerRoopesh Chander <roop@roopc.net>
Mon, 14 Jan 2019 09:22:32 +0000 (14:52 +0530)
Signed-off-by: Roopesh Chander <roop@roopc.net>
WireGuard/WireGuard/UI/macOS/StatusMenu.swift

index b18f7b1ccbce04946668780374a600c3907f7e13..cbeed35cf58a55b92138eae0c673088801466f61 100644 (file)
@@ -13,6 +13,13 @@ class StatusMenu: NSMenu {
     var firstTunnelMenuItemIndex: Int = 0
     var numberOfTunnelMenuItems: Int = 0
 
+    lazy var manageTunnelsWindow: NSWindow = {
+        let manageTunnelsRootVC = ManageTunnelsRootViewController(tunnelsManager: tunnelsManager)
+        let window = NSWindow(contentViewController: manageTunnelsRootVC)
+        window.setFrameAutosaveName(NSWindow.FrameAutosaveName("ManageTunnelsWindow")) // Auto-save window position and size
+        return window
+    }()
+
     init(tunnelsManager: TunnelsManager) {
         self.tunnelsManager = tunnelsManager
         super.init(title: "WireGuard Status Bar Menu")
@@ -116,17 +123,16 @@ class StatusMenu: NSMenu {
     }
 
     @objc func manageTunnelsClicked() {
-        let manageTunnelsRootVC = ManageTunnelsRootViewController(tunnelsManager: tunnelsManager)
-        let window = NSWindow(contentViewController: manageTunnelsRootVC)
-        window.setFrameAutosaveName(NSWindow.FrameAutosaveName("ManageTunnelsWindow")) // Auto-save window position and size
         NSApp.activate(ignoringOtherApps: true)
-        window.makeKeyAndOrderFront(self)
+        manageTunnelsWindow.makeKeyAndOrderFront(self)
     }
 
     @objc func importTunnelsClicked() {
+        NSApp.activate(ignoringOtherApps: true)
+        manageTunnelsWindow.makeKeyAndOrderFront(self)
         let openPanel = NSOpenPanel()
         openPanel.allowedFileTypes = ["conf", "zip"]
-        openPanel.begin { [weak tunnelsManager] response in
+        openPanel.beginSheetModal(for: manageTunnelsWindow) { [weak tunnelsManager] response in
             guard let tunnelsManager = tunnelsManager else { return }
             guard response == .OK else { return }
             guard let url = openPanel.url else { return }