diff --git a/qutebrowser/browser/webelem.py b/qutebrowser/browser/webelem.py index 2903aec72..cd56a9127 100644 --- a/qutebrowser/browser/webelem.py +++ b/qutebrowser/browser/webelem.py @@ -365,10 +365,9 @@ class AbstractWebElement(collections.abc.MutableMapping): self._tab.send_event(evt) def after_click(): - """Move cursor to end and reset override_target after clicking.""" + """Move cursor to end after clicking.""" if self.is_text_input() and self.is_editable(): self._tab.caret.move_to_end_of_document() - self._tab.data.override_target = None QTimer.singleShot(0, after_click) def hover(self): diff --git a/qutebrowser/browser/webengine/webview.py b/qutebrowser/browser/webengine/webview.py index d927c8c32..98bf75b99 100644 --- a/qutebrowser/browser/webengine/webview.py +++ b/qutebrowser/browser/webengine/webview.py @@ -82,6 +82,7 @@ class WebEngineView(QWebEngineView): if override_target is not None: target = override_target + self._tabdata.override_target = None elif wintype == QWebEnginePage.WebBrowserWindow: log.webview.debug("createWindow with WebBrowserWindow - when does " "this happen?!") diff --git a/qutebrowser/browser/webkit/webpage.py b/qutebrowser/browser/webkit/webpage.py index d7cf7cdf1..464fc3785 100644 --- a/qutebrowser/browser/webkit/webpage.py +++ b/qutebrowser/browser/webkit/webpage.py @@ -473,6 +473,7 @@ class BrowserPage(QWebPage): if self._tabdata.override_target is not None: target = self._tabdata.override_target + self._tabdata.override_target = None else: target = self.open_target diff --git a/qutebrowser/mainwindow/tabbedbrowser.py b/qutebrowser/mainwindow/tabbedbrowser.py index e38610ad2..4198c35c6 100644 --- a/qutebrowser/mainwindow/tabbedbrowser.py +++ b/qutebrowser/mainwindow/tabbedbrowser.py @@ -369,7 +369,10 @@ class TabbedBrowser(tabwidget.TabWidget): """ if url is not None: qtutils.ensure_valid(url) - log.webview.debug("Creating new tab with URL {}".format(url)) + log.webview.debug("Creating new tab with URL {}, background {}, " + "explicit {}, idx {}".format( + url, background, explicit, idx)) + if config.get('tabs', 'tabs-are-windows') and self.count() > 0: from qutebrowser.mainwindow import mainwindow window = mainwindow.MainWindow() @@ -521,13 +524,15 @@ class TabbedBrowser(tabwidget.TabWidget): # If needed, re-open the tab as a workaround for QTBUG-54419. # See https://bugreports.qt.io/browse/QTBUG-54419 + background = self.currentIndex() != idx + if (tab.backend == usertypes.Backend.QtWebEngine and tab.needs_qtbug54419_workaround): log.misc.debug("Doing QTBUG-54419 workaround for {}, " "url {}".format(tab, url)) self.setUpdatesEnabled(False) try: - self.tabopen(url) + self.tabopen(url, background=background, idx=idx) self.close_tab(tab, add_undo=False) finally: self.setUpdatesEnabled(True) diff --git a/tests/end2end/features/hints.feature b/tests/end2end/features/hints.feature index 0f44adff4..5369cb56f 100644 --- a/tests/end2end/features/hints.feature +++ b/tests/end2end/features/hints.feature @@ -112,6 +112,18 @@ Feature: Using hints And I hint with args "links yank-primary" and follow a Then the clipboard should contain "http://localhost:(port)/data/hello.txt" + Scenario: Rapid hinting + When I open data/hints/rapid.html + And I run :tab-only + And I hint with args "all tab-bg --rapid" + And I run :follow-hint a + And I run :follow-hint s + And I run :leave-mode + Then the following tabs should be open: + - data/hints/rapid.html (active) + - data/hello.txt + - data/hello2.txt + Scenario: Using hint --rapid to hit multiple buttons When I open data/hints/buttons.html And I hint with args "--rapid"