]> git.ipfire.org Git - thirdparty/wireguard-apple.git/commitdiff
macOS: Tunnel edit: Disable user interaction when OS VPN prompt is shown
authorRoopesh Chander <roop@roopc.net>
Sun, 24 Feb 2019 10:35:13 +0000 (16:05 +0530)
committerRoopesh Chander <roop@roopc.net>
Sun, 24 Feb 2019 10:36:37 +0000 (16:06 +0530)
Signed-off-by: Roopesh Chander <roop@roopc.net>
WireGuard/WireGuard/UI/macOS/ViewController/TunnelEditViewController.swift

index b99bffcc3c500df23a2841bb34e60c19d9214b07..6e4a23a5079d63f366459aa7d7761abeeb19d284 100644 (file)
@@ -198,6 +198,12 @@ class TunnelEditViewController: NSViewController {
         self.view = containerView
     }
 
+    func setUserInteractionEnabled(_ enabled: Bool) {
+        view.window?.ignoresMouseEvents = !enabled
+        nameRow.valueLabel.isEditable = enabled
+        textView.isEditable = enabled
+    }
+
     @objc func handleSaveAction() {
         let name = nameRow.value
         guard !name.isEmpty else {
@@ -242,9 +248,12 @@ class TunnelEditViewController: NSViewController {
             }
         }
 
+        setUserInteractionEnabled(false)
+
         if let tunnel = tunnel {
             // We're modifying an existing tunnel
             tunnelsManager.modify(tunnel: tunnel, tunnelConfiguration: tunnelConfiguration, activateOnDemandSetting: onDemandSetting) { [weak self] error in
+                self?.setUserInteractionEnabled(true)
                 if let error = error {
                     ErrorPresenter.showErrorAlert(error: error, from: self)
                     return
@@ -256,6 +265,7 @@ class TunnelEditViewController: NSViewController {
             // We're creating a new tunnel
             AppStorePrivacyNotice.show(from: self, into: tunnelsManager) { [weak self] in
                 self?.tunnelsManager.add(tunnelConfiguration: tunnelConfiguration, activateOnDemandSetting: onDemandSetting) { [weak self] result in
+                    self?.setUserInteractionEnabled(true)
                     if let error = result.error {
                         ErrorPresenter.showErrorAlert(error: error, from: self)
                         return