From f48266f72f2b540f18e4ff712e7eea4a560277b7 Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Wed, 6 Jun 2018 18:07:56 +0200 Subject: Fix lint (cherry picked from commit 7e31897dcc5b1b5e49719d2d0d1dc6908be36205) --- qutebrowser/browser/webengine/webenginetab.py | 2 +- qutebrowser/browser/webengine/webview.py | 7 ++++++- qutebrowser/misc/miscwidgets.py | 11 +++++++++++ 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/qutebrowser/browser/webengine/webenginetab.py b/qutebrowser/browser/webengine/webenginetab.py index ad53eee1c..87fbb1fc7 100644 --- a/qutebrowser/browser/webengine/webenginetab.py +++ b/qutebrowser/browser/webengine/webenginetab.py @@ -30,7 +30,7 @@ from PyQt5.QtCore import (pyqtSignal, pyqtSlot, Qt, QEvent, QPoint, QPointF, QUrl, QTimer) from PyQt5.QtGui import QKeyEvent, QIcon from PyQt5.QtNetwork import QAuthenticator -from PyQt5.QtWidgets import QApplication, QWidget +from PyQt5.QtWidgets import QApplication from PyQt5.QtWebEngineWidgets import QWebEnginePage, QWebEngineScript from qutebrowser.config import configdata, config diff --git a/qutebrowser/browser/webengine/webview.py b/qutebrowser/browser/webengine/webview.py index be4ee334f..ea23ecca2 100644 --- a/qutebrowser/browser/webengine/webview.py +++ b/qutebrowser/browser/webengine/webview.py @@ -58,7 +58,12 @@ class WebEngineView(QWebEngineView): self._layout = miscwidgets.PseudoLayout(self) def render_widget(self): - """Get the RenderWidgetHostViewQt for this view.""" + """Get the RenderWidgetHostViewQt for this view. + + Normally, this would always be the focusProxy(). + However, it sometimes isn't, so we use this as a WORKAROUND for + https://bugreports.qt.io/browse/QTBUG-68727 + """ proxy = self.focusProxy() if proxy is not None: return proxy diff --git a/qutebrowser/misc/miscwidgets.py b/qutebrowser/misc/miscwidgets.py index 9c2101ca7..eef127cf2 100644 --- a/qutebrowser/misc/miscwidgets.py +++ b/qutebrowser/misc/miscwidgets.py @@ -268,6 +268,15 @@ class WrapperLayout(QLayout): class PseudoLayout(QLayout): + """A layout which isn't actually a real layout. + + This is used to replace QWebEngineView's internal layout, as a WORKAROUND + for https://bugreports.qt.io/browse/QTBUG-68224 and other related issues. + + This is partly inspired by https://codereview.qt-project.org/#/c/230894/ + which does something similar as part of Qt. + """ + def addItem(self, item): assert self.parent() is not None item.widget().setParent(self.parent()) @@ -285,11 +294,13 @@ class PseudoLayout(QLayout): return self.parent().render_widget() def setGeometry(self, rect): + """Resize the render widget when the view is resized.""" widget = self.widget() if widget is not None: widget.setGeometry(rect) def sizeHint(self): + """Make sure the view has the sizeHint of the render widget.""" widget = self.widget() if widget is not None: return widget.sizeHint() -- cgit v1.2.3-54-g00ecf