diff --git a/qutebrowser/browser/eventfilter.py b/qutebrowser/browser/eventfilter.py index 1cff11ac4..d55aa6593 100644 --- a/qutebrowser/browser/eventfilter.py +++ b/qutebrowser/browser/eventfilter.py @@ -6,11 +6,12 @@ from qutebrowser.qt import machinery from qutebrowser.qt.core import QObject, QEvent, Qt, QTimer +from qutebrowser.qt.gui import QKeyEvent from qutebrowser.qt.widgets import QWidget from qutebrowser.config import config from qutebrowser.utils import log, message, usertypes, qtutils -from qutebrowser.keyinput import modeman +from qutebrowser.keyinput import modeman, keyutils class ChildEventFilter(QObject): @@ -69,6 +70,15 @@ class ChildEventFilter(QObject): child.installEventFilter(self._filter) elif event.type() == QEvent.Type.ChildRemoved: + if isinstance(event, QKeyEvent): + # WORKAROUND for unknown (Py)Qt bug + info = keyutils.KeyInfo.from_event(event) + log.misc.warning( + f"ChildEventFilter: ignoring key event {info} " + f"on {qtutils.qobj_repr(obj)}" + ) + return False + child = event.child() log.misc.debug( f"{qtutils.qobj_repr(obj)}: removed child {qtutils.qobj_repr(child)}")