diff options
author | Florian Bruhin <git@the-compiler.org> | 2018-06-06 17:33:47 +0200 |
---|---|---|
committer | Florian Bruhin <git@the-compiler.org> | 2018-06-06 20:30:34 +0200 |
commit | 341aa1e7002d04696ef5f1bd3d3f6523bc5885d1 (patch) | |
tree | e7cf96095ae5f87286ab0622ec20e0e90be479be | |
parent | ebf81c06aef103e6e079f6ee8aac7884ce9d7e90 (diff) | |
download | qutebrowser-341aa1e7002d04696ef5f1bd3d3f6523bc5885d1.tar.gz qutebrowser-341aa1e7002d04696ef5f1bd3d3f6523bc5885d1.zip |
Try harder to get the RenderWidgetHostViewQt
(cherry picked from commit ec6c5ebb699c5cf3cdc56f0f9f48c2e5af0e9a29)
-rw-r--r-- | qutebrowser/browser/webengine/webenginetab.py | 2 | ||||
-rw-r--r-- | qutebrowser/browser/webengine/webview.py | 20 |
2 files changed, 18 insertions, 4 deletions
diff --git a/qutebrowser/browser/webengine/webenginetab.py b/qutebrowser/browser/webengine/webenginetab.py index 1f59d67d8..ad53eee1c 100644 --- a/qutebrowser/browser/webengine/webenginetab.py +++ b/qutebrowser/browser/webengine/webenginetab.py @@ -1115,4 +1115,4 @@ class WebEngineTab(browsertab.AbstractTab): self.predicted_navigation.connect(self._on_predicted_navigation) def event_target(self): - return self._widget.focusProxy() + return self._widget.render_widget() diff --git a/qutebrowser/browser/webengine/webview.py b/qutebrowser/browser/webengine/webview.py index f597e960c..f2ef3102f 100644 --- a/qutebrowser/browser/webengine/webview.py +++ b/qutebrowser/browser/webengine/webview.py @@ -24,6 +24,7 @@ import functools import sip from PyQt5.QtCore import pyqtSignal, pyqtSlot, QUrl, PYQT_VERSION from PyQt5.QtGui import QPalette +from PyQt5.QtWidgets import QWidget from PyQt5.QtWebEngineWidgets import (QWebEngineView, QWebEnginePage, QWebEngineScript) @@ -56,13 +57,26 @@ class WebEngineView(QWebEngineView): sip.delete(self.layout()) self._layout = miscwidgets.PseudoLayout(self) + def render_widget(self): + """Get the RenderWidgetHostViewQt for this view.""" + proxy = self.focusProxy() + if proxy is not None: + return proxy + + children = self.findChildren(QWidget) + if not children: + return None + + assert len(children) == 1 + return children[0] + def shutdown(self): self.page().shutdown() def resizeEvent(self, _event): - proxy = self.focusProxy() - if proxy: - proxy.setGeometry(self.rect()) + widget = self.render_widget() + if widget is not None: + widget.setGeometry(self.rect()) def createWindow(self, wintype): """Called by Qt when a page wants to create a new window. |