summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Bruhin <git@the-compiler.org>2015-02-26 20:11:13 +0100
committerFlorian Bruhin <git@the-compiler.org>2015-03-18 23:13:42 +0100
commitf3b55d68db05247b5c3f5dc576dadb0aa1848ca3 (patch)
tree697bba5e93ba0544fa5f1fef8a0162265e213c9d
parent4bad99e39471b8dcfcda9ef5236f828ff75c2552 (diff)
downloadqutebrowser-f3b55d68db05247b5c3f5dc576dadb0aa1848ca3.tar.gz
qutebrowser-f3b55d68db05247b5c3f5dc576dadb0aa1848ca3.zip
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.
-rw-r--r--qutebrowser/browser/hints.py8
1 files changed, 6 insertions, 2 deletions
diff --git a/qutebrowser/browser/hints.py b/qutebrowser/browser/hints.py
index e125e9e96..91d49bbbc 100644
--- a/qutebrowser/browser/hints.py
+++ b/qutebrowser/browser/hints.py
@@ -373,6 +373,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),
@@ -381,9 +385,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)