summaryrefslogtreecommitdiff
path: root/qutebrowser/browser/commands.py
diff options
context:
space:
mode:
Diffstat (limited to 'qutebrowser/browser/commands.py')
-rw-r--r--qutebrowser/browser/commands.py34
1 files changed, 20 insertions, 14 deletions
diff --git a/qutebrowser/browser/commands.py b/qutebrowser/browser/commands.py
index 83a846b85..4ce677caa 100644
--- a/qutebrowser/browser/commands.py
+++ b/qutebrowser/browser/commands.py
@@ -10,7 +10,7 @@ import functools
from typing import cast, Callable, Dict, Union, Optional
from qutebrowser.qt.widgets import QApplication, QTabBar
-from qutebrowser.qt.core import Qt, QUrl, QEvent, QUrlQuery
+from qutebrowser.qt.core import Qt, QUrl, QEvent, QUrlQuery, QTimer
from qutebrowser.commands import userscripts, runners
from qutebrowser.api import cmdutils
@@ -1790,20 +1790,26 @@ class CommandDispatcher:
except keyutils.KeyParseError as e:
raise cmdutils.CommandError(str(e))
+ events = []
for keyinfo in sequence:
- press_event = keyinfo.to_event(QEvent.Type.KeyPress)
- release_event = keyinfo.to_event(QEvent.Type.KeyRelease)
-
- if global_:
- window = QApplication.focusWindow()
- if window is None:
- raise cmdutils.CommandError("No focused window!")
- QApplication.postEvent(window, press_event)
- QApplication.postEvent(window, release_event)
- else:
- tab = self._current_widget()
- tab.send_event(press_event)
- tab.send_event(release_event)
+ events.append(keyinfo.to_event(QEvent.Type.KeyPress))
+ events.append(keyinfo.to_event(QEvent.Type.KeyRelease))
+
+ if global_:
+ window = QApplication.focusWindow()
+ if window is None:
+ raise cmdutils.CommandError("No focused window!")
+ for event in events:
+ QApplication.postEvent(window, event)
+ else:
+ tab = self._current_widget()
+
+ def _send_fake_key_after_delay():
+ """Delay events to workaround timing issue in e2e tests on 6.7."""
+ for event in events:
+ tab.send_event(event)
+
+ QTimer.singleShot(10, _send_fake_key_after_delay)
@cmdutils.register(instance='command-dispatcher', scope='window',
debug=True, backend=usertypes.Backend.QtWebKit)