From ddb39275eb3f4346f7d5e80ea846acfbacfc0e74 Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Thu, 26 Feb 2015 20:11:13 +0100 Subject: [PATCH] Simulate Ctrl-click when hinting in new tab/win. This works around the fact some pages (e.g. github) load their content via AJAX on a normal left click, so we'll never get acceptNavigationRequest and thus can't open them in a new tab. Fixes #488. --- qutebrowser/browser/hints.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/qutebrowser/browser/hints.py b/qutebrowser/browser/hints.py index 6e6e0f932..66bf38c8b 100644 --- a/qutebrowser/browser/hints.py +++ b/qutebrowser/browser/hints.py @@ -386,6 +386,10 @@ class HintManager(QObject): action = "Hovering" if target == Target.hover else "Clicking" log.hints.debug("{} on '{}' at {}/{}".format( action, elem, pos.x(), pos.y())) + if target in (Target.tab, Target.tab_bg, Target.window): + modifiers = Qt.ControlModifier + else: + modifiers = Qt.NoModifier events = [ QMouseEvent(QEvent.MouseMove, pos, Qt.NoButton, Qt.NoButton, Qt.NoModifier), @@ -394,9 +398,9 @@ class HintManager(QObject): self.set_open_target.emit(target.name) events += [ QMouseEvent(QEvent.MouseButtonPress, pos, Qt.LeftButton, - Qt.NoButton, Qt.NoModifier), + Qt.NoButton, modifiers), QMouseEvent(QEvent.MouseButtonRelease, pos, Qt.LeftButton, - Qt.NoButton, Qt.NoModifier), + Qt.NoButton, modifiers), ] for evt in events: self.mouse_event.emit(evt)