summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--qutebrowser/browser/eventfilter.py18
1 files changed, 17 insertions, 1 deletions
diff --git a/qutebrowser/browser/eventfilter.py b/qutebrowser/browser/eventfilter.py
index a9ddb93c2..b5659dba0 100644
--- a/qutebrowser/browser/eventfilter.py
+++ b/qutebrowser/browser/eventfilter.py
@@ -8,8 +8,9 @@ from qutebrowser.qt import machinery
from qutebrowser.qt.core import QObject, QEvent, Qt, QTimer
from qutebrowser.config import config
-from qutebrowser.utils import log, message, usertypes, qtutils
+from qutebrowser.utils import log, message, usertypes, qtutils, version, utils
from qutebrowser.keyinput import modeman
+from qutebrowser.misc import objects
class ChildEventFilter(QObject):
@@ -43,6 +44,21 @@ class ChildEventFilter(QObject):
if self._widget is not None:
assert obj is self._widget
+ # Carry on keyboard focus to the new child
+ # WORKAROUND for unknown Qt bug losing focus on child change
+ old_focus_widget = objects.qapp.focusWidget()
+ if old_focus_widget is not None:
+ metaobj = old_focus_widget.metaObject()
+ if (
+ metaobj is not None and
+ metaobj.className() == "QQuickWidget" and
+ old_focus_widget.parent() is obj and
+ objects.backend == usertypes.Backend.QtWebEngine and
+ version.qtwebengine_versions().webengine >= utils.VersionNumber(6, 2)
+ ):
+ log.misc.debug("Focusing new child")
+ child.setFocus()
+
child.installEventFilter(self._filter)
elif event.type() == QEvent.Type.ChildRemoved:
child = event.child()