diff options
Diffstat (limited to 'qutebrowser/browser/commands.py')
-rw-r--r-- | qutebrowser/browser/commands.py | 34 |
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) |