eventfilter: Ignore QKeyEvents in ChildEventFilter
Based on crash reports, sometimes somehow a QKeyEvent gets lost in there.
This commit is contained in:
parent
9447182809
commit
bb7bbb6ead
|
|
@ -6,11 +6,12 @@
|
||||||
|
|
||||||
from qutebrowser.qt import machinery
|
from qutebrowser.qt import machinery
|
||||||
from qutebrowser.qt.core import QObject, QEvent, Qt, QTimer
|
from qutebrowser.qt.core import QObject, QEvent, Qt, QTimer
|
||||||
|
from qutebrowser.qt.gui import QKeyEvent
|
||||||
from qutebrowser.qt.widgets import QWidget
|
from qutebrowser.qt.widgets import QWidget
|
||||||
|
|
||||||
from qutebrowser.config import config
|
from qutebrowser.config import config
|
||||||
from qutebrowser.utils import log, message, usertypes, qtutils
|
from qutebrowser.utils import log, message, usertypes, qtutils
|
||||||
from qutebrowser.keyinput import modeman
|
from qutebrowser.keyinput import modeman, keyutils
|
||||||
|
|
||||||
|
|
||||||
class ChildEventFilter(QObject):
|
class ChildEventFilter(QObject):
|
||||||
|
|
@ -69,6 +70,15 @@ class ChildEventFilter(QObject):
|
||||||
|
|
||||||
child.installEventFilter(self._filter)
|
child.installEventFilter(self._filter)
|
||||||
elif event.type() == QEvent.Type.ChildRemoved:
|
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()
|
child = event.child()
|
||||||
log.misc.debug(
|
log.misc.debug(
|
||||||
f"{qtutils.qobj_repr(obj)}: removed child {qtutils.qobj_repr(child)}")
|
f"{qtutils.qobj_repr(obj)}: removed child {qtutils.qobj_repr(child)}")
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue