From: Jason A. Donenfeld Date: Wed, 22 Sep 2021 00:40:49 +0000 (+0200) Subject: UI: macOS: do on-demand ritual for clicking list item too X-Git-Tag: 1.0.14-25~13 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=3428bfbc9e6686e1293c96d15ce91bc47512828a;p=thirdparty%2Fwireguard-apple.git UI: macOS: do on-demand ritual for clicking list item too Signed-off-by: Jason A. Donenfeld --- diff --git a/Sources/WireGuardApp/UI/macOS/ViewController/TunnelDetailTableViewController.swift b/Sources/WireGuardApp/UI/macOS/ViewController/TunnelDetailTableViewController.swift index 03cecf7..6ad8cf3 100644 --- a/Sources/WireGuardApp/UI/macOS/ViewController/TunnelDetailTableViewController.swift +++ b/Sources/WireGuardApp/UI/macOS/ViewController/TunnelDetailTableViewController.swift @@ -216,9 +216,9 @@ class TunnelDetailTableViewController: NSViewController { } @objc func handleToggleActiveStatusAction() { - if self.tunnel.hasOnDemandRules { - let turnOn = !self.tunnel.isActivateOnDemandEnabled - self.tunnelsManager.setOnDemandEnabled(turnOn, on: self.tunnel) { error in + if tunnel.hasOnDemandRules { + let turnOn = !tunnel.isActivateOnDemandEnabled + tunnelsManager.setOnDemandEnabled(turnOn, on: tunnel) { error in if error == nil && !turnOn { self.tunnelsManager.startDeactivation(of: self.tunnel) } diff --git a/Sources/WireGuardApp/UI/macOS/ViewController/TunnelsListTableViewController.swift b/Sources/WireGuardApp/UI/macOS/ViewController/TunnelsListTableViewController.swift index 265d3c3..e1fd1e8 100644 --- a/Sources/WireGuardApp/UI/macOS/ViewController/TunnelsListTableViewController.swift +++ b/Sources/WireGuardApp/UI/macOS/ViewController/TunnelsListTableViewController.swift @@ -232,10 +232,19 @@ class TunnelsListTableViewController: NSViewController { let tunnelIndex = tableView.clickedRow guard tunnelIndex >= 0 && tunnelIndex < tunnelsManager.numberOfTunnels() else { return } let tunnel = tunnelsManager.tunnel(at: tunnelIndex) - if tunnel.status == .inactive { - tunnelsManager.startActivation(of: tunnel) - } else if tunnel.status == .active { - tunnelsManager.startDeactivation(of: tunnel) + if tunnel.hasOnDemandRules { + let turnOn = !tunnel.isActivateOnDemandEnabled + tunnelsManager.setOnDemandEnabled(turnOn, on: tunnel) { error in + if error == nil && !turnOn { + self.tunnelsManager.startDeactivation(of: tunnel) + } + } + } else { + if tunnel.status == .inactive { + tunnelsManager.startActivation(of: tunnel) + } else if tunnel.status == .active { + tunnelsManager.startDeactivation(of: tunnel) + } } }