From bb7bbb6ead5b7412fa5828249d56e51c1b35cb5a Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Fri, 16 May 2025 16:36:38 +0200 Subject: [PATCH] eventfilter: Ignore QKeyEvents in ChildEventFilter Based on crash reports, sometimes somehow a QKeyEvent gets lost in there. --- qutebrowser/browser/eventfilter.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) 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)}")