From 3428bfbc9e6686e1293c96d15ce91bc47512828a Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Wed, 22 Sep 2021 02:40:49 +0200 Subject: [PATCH] UI: macOS: do on-demand ritual for clicking list item too Signed-off-by: Jason A. Donenfeld --- .../TunnelDetailTableViewController.swift | 6 +++--- .../TunnelsListTableViewController.swift | 17 +++++++++++++---- 2 files changed, 16 insertions(+), 7 deletions(-) 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) + } } }