summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Bruhin <me@the-compiler.org>2023-08-15 14:03:25 +0200
committerFlorian Bruhin <me@the-compiler.org>2023-08-15 14:30:10 +0200
commitf6d44b927aa97de472001e9699944d12dbee3345 (patch)
tree266efeb1f35995fdeec5143c3ae74e9cf177bbbe
parent0d2afd58f3d0e34af21cee7d8a3fc9d855594e9f (diff)
downloadqutebrowser-f6d44b927aa97de472001e9699944d12dbee3345.tar.gz
qutebrowser-f6d44b927aa97de472001e9699944d12dbee3345.zip
First child widget keyboard focus workaround
Fixes #7820
-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()