eventfilter: Ignore QKeyEvents in ChildEventFilter

Based on crash reports, sometimes somehow a QKeyEvent gets lost in there.
This commit is contained in:
Florian Bruhin 2025-05-16 16:36:38 +02:00
parent 9447182809
commit bb7bbb6ead
1 changed files with 11 additions and 1 deletions

View File

@ -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)}")