]> git.ipfire.org Git - thirdparty/wireguard-apple.git/commitdiff
macOS: Select the active tunnel when showing the manage tunnels window
authorRoopesh Chander <roop@roopc.net>
Thu, 24 Jan 2019 13:05:07 +0000 (18:35 +0530)
committerRoopesh Chander <roop@roopc.net>
Thu, 24 Jan 2019 13:05:11 +0000 (18:35 +0530)
Signed-off-by: Roopesh Chander <roop@roopc.net>
WireGuard/WireGuard/Tunnel/TunnelsManager.swift
WireGuard/WireGuard/UI/macOS/ViewController/TunnelsListTableViewController.swift

index d65814bda28a21823a78f3e148b38b20cde62939..7b1a9af8ebda65fb8792b77ba9613b6b9d053b3b 100644 (file)
@@ -226,6 +226,10 @@ class TunnelsManager {
         return tunnels[index]
     }
 
+    func index(of tunnel: TunnelContainer) -> Int? {
+        return tunnels.firstIndex(of: tunnel)
+    }
+
     func tunnel(named tunnelName: String) -> TunnelContainer? {
         return tunnels.first { $0.name == tunnelName }
     }
index 5ae89c448e5939b99e15372d3396ab7694a0a3fe..46f6bcb56839195611ed3bbdc76c5ef6c518852f 100644 (file)
@@ -61,7 +61,8 @@ class TunnelsListTableViewController: NSViewController {
     override func loadView() {
         tableView.dataSource = self
         tableView.delegate = self
-        let isSelected = selectTunnel(at: 0)
+
+        let isSelected = selectTunnelInOperation() || selectTunnel(at: 0)
         if !isSelected {
             delegate?.tunnelsListEmpty()
         }
@@ -110,6 +111,18 @@ class TunnelsListTableViewController: NSViewController {
         view = containerView
     }
 
+    override func viewWillAppear() {
+        selectTunnelInOperation()
+    }
+
+    @discardableResult
+    func selectTunnelInOperation() -> Bool {
+        if let currentTunnel = tunnelsManager.tunnelInOperation(), let indexToSelect = tunnelsManager.index(of: currentTunnel) {
+            return selectTunnel(at: indexToSelect)
+        }
+        return false
+    }
+
     @objc func buttonBarClicked(sender: AnyObject?) {
         guard let buttonBar = sender as? NSSegmentedControl else { return }
         // We have to resort to explicitly showing the menu instead of using NSSegmentedControl.setMenu()