diff options
author | Roopesh Chander <roop@roopc.net> | 2019-05-15 16:16:00 +0530 |
---|---|---|
committer | Roopesh Chander <roop@roopc.net> | 2019-05-20 16:42:27 +0530 |
commit | 9bf304a9acd6a7ddd7459df9fbd84b4a804a6069 (patch) | |
tree | 9da4fbdc4395fbe034b6f997d78a0bc932f6e449 | |
parent | macOS: Disable 'Delete Selected' when nothing is selected (diff) | |
download | wireguard-apple-9bf304a9acd6a7ddd7459df9fbd84b4a804a6069.tar.xz wireguard-apple-9bf304a9acd6a7ddd7459df9fbd84b4a804a6069.zip |
macOS: Minor refactor of StatusMenuWindowDelegate
Signed-off-by: Roopesh Chander <roop@roopc.net>
-rw-r--r-- | WireGuard/WireGuard/UI/macOS/AppDelegate.swift | 13 | ||||
-rw-r--r-- | WireGuard/WireGuard/UI/macOS/StatusMenu.swift | 18 |
2 files changed, 18 insertions, 13 deletions
diff --git a/WireGuard/WireGuard/UI/macOS/AppDelegate.swift b/WireGuard/WireGuard/UI/macOS/AppDelegate.swift index 8dc5825..d3e2c0a 100644 --- a/WireGuard/WireGuard/UI/macOS/AppDelegate.swift +++ b/WireGuard/WireGuard/UI/macOS/AppDelegate.swift @@ -124,9 +124,13 @@ extension AppDelegate { } extension AppDelegate: StatusMenuWindowDelegate { - func manageTunnelsWindow() -> NSWindow { + func showManageTunnelsWindow(completion: ((NSWindow?) -> Void)?) { + guard let tunnelsManager = tunnelsManager else { + completion?(nil) + return + } if manageTunnelsWindowObject == nil { - manageTunnelsRootVC = ManageTunnelsRootViewController(tunnelsManager: tunnelsManager!) + manageTunnelsRootVC = ManageTunnelsRootViewController(tunnelsManager: tunnelsManager) let window = NSWindow(contentViewController: manageTunnelsRootVC!) window.title = tr("macWindowTitleManageTunnels") window.setContentSize(NSSize(width: 800, height: 480)) @@ -134,7 +138,10 @@ extension AppDelegate: StatusMenuWindowDelegate { manageTunnelsWindowObject = window tunnelsTracker?.manageTunnelsRootVC = manageTunnelsRootVC } - return manageTunnelsWindowObject! + NSApp.setActivationPolicy(.regular) + NSApp.activate(ignoringOtherApps: true) + manageTunnelsWindowObject!.makeKeyAndOrderFront(self) + completion?(manageTunnelsWindowObject) } } diff --git a/WireGuard/WireGuard/UI/macOS/StatusMenu.swift b/WireGuard/WireGuard/UI/macOS/StatusMenu.swift index 4044d4e..f4f999d 100644 --- a/WireGuard/WireGuard/UI/macOS/StatusMenu.swift +++ b/WireGuard/WireGuard/UI/macOS/StatusMenu.swift @@ -4,7 +4,7 @@ import Cocoa protocol StatusMenuWindowDelegate: class { - func manageTunnelsWindow() -> NSWindow + func showManageTunnelsWindow(completion: ((NSWindow?) -> Void)?) } class StatusMenu: NSMenu { @@ -151,18 +151,16 @@ class StatusMenu: NSMenu { } @objc func manageTunnelsClicked() { - NSApp.setActivationPolicy(.regular) - NSApp.activate(ignoringOtherApps: true) - guard let manageTunnelsWindow = windowDelegate?.manageTunnelsWindow() else { return } - manageTunnelsWindow.makeKeyAndOrderFront(self) + windowDelegate?.showManageTunnelsWindow(completion: nil) } @objc func importTunnelsClicked() { - NSApp.setActivationPolicy(.regular) - NSApp.activate(ignoringOtherApps: true) - guard let manageTunnelsWindow = windowDelegate?.manageTunnelsWindow() else { return } - manageTunnelsWindow.makeKeyAndOrderFront(self) - ImportPanelPresenter.presentImportPanel(tunnelsManager: tunnelsManager, sourceVC: manageTunnelsWindow.contentViewController) + windowDelegate?.showManageTunnelsWindow { [weak self] manageTunnelsWindow in + guard let self = self else { return } + guard let manageTunnelsWindow = manageTunnelsWindow else { return } + ImportPanelPresenter.presentImportPanel(tunnelsManager: self.tunnelsManager, + sourceVC: manageTunnelsWindow.contentViewController) + } } } |