From a56c647a9927b4a48c5eedea34d9ab912e8dbd36 Mon Sep 17 00:00:00 2001 From: James Magahern Date: Mon, 15 Feb 2021 22:56:20 -0800 Subject: [PATCH] Browser: Hold new tab to open links in new tab --- App/Browser View/BrowserViewController.swift | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/App/Browser View/BrowserViewController.swift b/App/Browser View/BrowserViewController.swift index 476d70a..cc33d2b 100644 --- a/App/Browser View/BrowserViewController.swift +++ b/App/Browser View/BrowserViewController.swift @@ -40,6 +40,12 @@ class BrowserViewController: UIViewController, WKNavigationDelegate, WKUIDelegat private var loadError: Error? private var commandKeyHeld: Bool = false + private var windowButtonHeld: Bool { + get { toolbarController.newTabButton.isTracking } + set { toolbarController.newTabButton.cancelTracking(with: nil) } + } + + static let longPressWindowButtonToMakeNewTab: Bool = false private var darkModeEnabled: Bool { get { tab.bridge.darkModeEnabled } @@ -159,8 +165,12 @@ class BrowserViewController: UIViewController, WKNavigationDelegate, WKUIDelegat self.tab = newTab } - let gestureRecognizer = UILongPressGestureRecognizer(action: newTabAction) - toolbarController.windowButton.addGestureRecognizer(gestureRecognizer) + if Self.longPressWindowButtonToMakeNewTab { + // Long press window button to make new tab? + + let gestureRecognizer = UILongPressGestureRecognizer(action: newTabAction) + toolbarController.windowButton.addGestureRecognizer(gestureRecognizer) + } // New tab button toolbarController.newTabButton.addAction(newTabAction, for: .touchUpInside) @@ -508,7 +518,7 @@ class BrowserViewController: UIViewController, WKNavigationDelegate, WKUIDelegat func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, preferences: WKWebpagePreferences, decisionHandler: @escaping (WKNavigationActionPolicy, WKWebpagePreferences) -> Void) { // Handle command+click - if commandKeyHeld && navigationAction.navigationType == .linkActivated { + if (commandKeyHeld || windowButtonHeld) && navigationAction.navigationType == .linkActivated { // Cancel navigation in this tab decisionHandler(.cancel, preferences) @@ -518,6 +528,7 @@ class BrowserViewController: UIViewController, WKNavigationDelegate, WKUIDelegat // Reset this flag. commandKeyHeld = false + windowButtonHeld = false return }