From 8d9c5e2950bf2afed2cd981127ce91787b69ccf5 Mon Sep 17 00:00:00 2001 From: Roopesh Chander Date: Thu, 3 Jan 2019 19:43:52 +0530 Subject: macOS: Show open panel as sheet on manage window Signed-off-by: Roopesh Chander --- WireGuard/WireGuard/UI/macOS/StatusMenu.swift | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'WireGuard') 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 } -- cgit v1.2.3-59-g8ed1b