]> git.ipfire.org Git - thirdparty/wireguard-apple.git/commitdiff
macOS: Dismiss modals correctly
authorRoopesh Chander <roop@roopc.net>
Wed, 29 May 2019 14:15:22 +0000 (19:45 +0530)
committerJason A. Donenfeld <Jason@zx2c4.com>
Fri, 31 May 2019 15:29:29 +0000 (17:29 +0200)
Previously, the presented vc were leaking when discarding edits
or when closing the log view controller.

Signed-off-by: Roopesh Chander <roop@roopc.net>
WireGuard/WireGuard/UI/macOS/ViewController/LogViewController.swift
WireGuard/WireGuard/UI/macOS/ViewController/TunnelEditViewController.swift

index 81469778879299593b1390b287fbf15f76de645a..088d161dca1274b4fe97acb3fad315e5bf258ad0 100644 (file)
@@ -220,7 +220,8 @@ class LogViewController: NSViewController {
                     return
                 }
                 DispatchQueue.main.async { [weak self] in
-                    self?.dismiss(self)
+                    guard let self = self else { return }
+                    self.presentingViewController?.dismiss(self)
                 }
             }
 
@@ -228,7 +229,7 @@ class LogViewController: NSViewController {
     }
 
     @objc func closeClicked() {
-        dismiss(self)
+        presentingViewController?.dismiss(self)
     }
 
     @objc func copy(_ sender: Any?) {
index 88cabbdcd63589cf0b12b65fb8df385e40578a3d..17ebbefe385ac8e3f84ad80552faf58b60d73f28 100644 (file)
@@ -237,24 +237,26 @@ class TunnelEditViewController: NSViewController {
         if let tunnel = tunnel {
             // We're modifying an existing tunnel
             tunnelsManager.modify(tunnel: tunnel, tunnelConfiguration: tunnelConfiguration, onDemandOption: onDemandOption) { [weak self] error in
-                self?.setUserInteractionEnabled(true)
+                guard let self = self else { return }
+                self.setUserInteractionEnabled(true)
                 if let error = error {
                     ErrorPresenter.showErrorAlert(error: error, from: self)
                     return
                 }
-                self?.dismiss(self)
-                self?.delegate?.tunnelSaved(tunnel: tunnel)
+                self.delegate?.tunnelSaved(tunnel: tunnel)
+                self.presentingViewController?.dismiss(self)
             }
         } else {
             // We're creating a new tunnel
             self.tunnelsManager.add(tunnelConfiguration: tunnelConfiguration, onDemandOption: onDemandOption) { [weak self] result in
-                self?.setUserInteractionEnabled(true)
+                guard let self = self else { return }
+                self.setUserInteractionEnabled(true)
                 switch result {
                 case .failure(let error):
                     ErrorPresenter.showErrorAlert(error: error, from: self)
                 case .success(let tunnel):
-                    self?.dismiss(self)
-                    self?.delegate?.tunnelSaved(tunnel: tunnel)
+                    self.delegate?.tunnelSaved(tunnel: tunnel)
+                    self.presentingViewController?.dismiss(self)
                 }
             }
         }
@@ -262,7 +264,7 @@ class TunnelEditViewController: NSViewController {
 
     @objc func handleDiscardAction() {
         delegate?.tunnelEditingCancelled()
-        dismiss(self)
+        presentingViewController?.dismiss(self)
     }
 
     func updateExcludePrivateIPsVisibility(singlePeerAllowedIPs: [String]?) {