Properly work around Qt 5.11 keyboard focus issues

Please let this be the last attempt... :D

Fixes #3939
Supersedes #3921
Reverts ae295a7f65
See #3661

This should not regress #3872. Might affect #3834 in some way.
This commit is contained in:
Florian Bruhin 2018-05-22 09:36:14 +02:00
parent bc37af7c95
commit 71ad8bdb47
3 changed files with 7 additions and 3 deletions

View File

@ -22,7 +22,7 @@
from PyQt5.QtCore import QObject, QEvent, Qt, QTimer from PyQt5.QtCore import QObject, QEvent, Qt, QTimer
from qutebrowser.config import config from qutebrowser.config import config
from qutebrowser.utils import message, log, usertypes from qutebrowser.utils import message, log, usertypes, qtutils
from qutebrowser.keyinput import modeman from qutebrowser.keyinput import modeman
@ -54,6 +54,11 @@ class ChildEventFilter(QObject):
obj, child)) obj, child))
assert obj is self._widget assert obj is self._widget
child.installEventFilter(self._filter) child.installEventFilter(self._filter)
if qtutils.version_check('5.11', compiled=False, exact=True):
# WORKAROUND for https://bugreports.qt.io/browse/QTBUG-68076
QTimer.singleShot(0, self._widget.setFocus)
return False return False

View File

@ -789,8 +789,6 @@ class WebEngineTab(browsertab.AbstractTab):
url: The QUrl to open. url: The QUrl to open.
predict: If set to False, predicted_navigation is not emitted. predict: If set to False, predicted_navigation is not emitted.
""" """
# WORKAROUND for https://bugreports.qt.io/browse/QTBUG-68076
self._widget.setFocus()
self._saved_zoom = self.zoom.factor() self._saved_zoom = self.zoom.factor()
self._openurl_prepare(url, predict=predict) self._openurl_prepare(url, predict=predict)
self._widget.load(url) self._widget.load(url)

View File

@ -490,6 +490,7 @@ class TabbedBrowser(QWidget):
else: else:
self.widget.setCurrentWidget(tab) self.widget.setCurrentWidget(tab)
# WORKAROUND for https://bugreports.qt.io/browse/QTBUG-68076 # WORKAROUND for https://bugreports.qt.io/browse/QTBUG-68076
# Still seems to be needed with Qt 5.11.1
tab.setFocus() tab.setFocus()
tab.show() tab.show()