]> git.ipfire.org Git - thirdparty/wireguard-apple.git/commitdiff
iOS: Should be able to call showTunnelDetail multiple times
authorRoopesh Chander <roop@roopc.net>
Sat, 18 May 2019 22:35:44 +0000 (04:05 +0530)
committerRoopesh Chander <roop@roopc.net>
Sat, 25 May 2019 18:42:42 +0000 (00:12 +0530)
And the detail views should not stack up.

Signed-off-by: Roopesh Chander <roop@roopc.net>
WireGuard/WireGuard/UI/iOS/ViewController/TunnelsListTableViewController.swift

index 8c40438ef14dd44767fbc6500e61258809e99d88..43f58df70fe3171fdb260db3e540a4af7e7f0467 100644 (file)
@@ -255,21 +255,21 @@ class TunnelsListTableViewController: UIViewController {
     func showTunnelDetail(for tunnel: TunnelContainer, animated: Bool) {
         guard let tunnelsManager = tunnelsManager else { return }
         guard let splitViewController = splitViewController else { return }
+        guard let navController = navigationController else { return }
 
         if detailDisplayedTunnel != tunnel {
             let tunnelDetailVC = TunnelDetailTableViewController(tunnelsManager: tunnelsManager,
                                                                  tunnel: tunnel)
             let tunnelDetailNC = UINavigationController(rootViewController: tunnelDetailVC)
             tunnelDetailNC.restorationIdentifier = "DetailNC"
-            if animated {
-                splitViewController.showDetailViewController(tunnelDetailNC, sender: self)
+            if splitViewController.isCollapsed && navController.viewControllers.count > 1 {
+                navController.setViewControllers([self, tunnelDetailNC], animated: animated)
             } else {
-                UIView.performWithoutAnimation {
-                    splitViewController.showDetailViewController(tunnelDetailNC, sender: self)
-                }
+                splitViewController.showDetailViewController(tunnelDetailNC, sender: self, animated: animated)
             }
             detailDisplayedTunnel = tunnel
         }
+        self.presentedViewController?.dismiss(animated: false, completion: nil)
     }
 }
 
@@ -402,3 +402,15 @@ extension TunnelsListTableViewController: TunnelsManagerListDelegate {
         }
     }
 }
+
+extension UISplitViewController {
+    func showDetailViewController(_ vc: UIViewController, sender: Any?, animated: Bool) {
+        if animated {
+            showDetailViewController(vc, sender: sender)
+        } else {
+            UIView.performWithoutAnimation {
+                showDetailViewController(vc, sender: sender)
+            }
+        }
+    }
+}