From 9bf304a9acd6a7ddd7459df9fbd84b4a804a6069 Mon Sep 17 00:00:00 2001 From: Roopesh Chander Date: Wed, 15 May 2019 16:16:00 +0530 Subject: [PATCH] macOS: Minor refactor of StatusMenuWindowDelegate Signed-off-by: Roopesh Chander --- WireGuard/WireGuard/UI/macOS/AppDelegate.swift | 13 ++++++++++--- 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) + } } }