From: Roopesh Chander Date: Thu, 3 Jan 2019 14:13:52 +0000 (+0530) Subject: macOS: Show open panel as sheet on manage window X-Git-Tag: 0.0.20190207-1~157 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8d9c5e2950bf2afed2cd981127ce91787b69ccf5;p=thirdparty%2Fwireguard-apple.git macOS: Show open panel as sheet on manage window Signed-off-by: Roopesh Chander --- diff --git a/WireGuard/WireGuard/UI/macOS/StatusMenu.swift b/WireGuard/WireGuard/UI/macOS/StatusMenu.swift index b18f7b1..cbeed35 100644 --- a/WireGuard/WireGuard/UI/macOS/StatusMenu.swift +++ b/WireGuard/WireGuard/UI/macOS/StatusMenu.swift @@ -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 }