From 341aa1e7002d04696ef5f1bd3d3f6523bc5885d1 Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Wed, 6 Jun 2018 17:33:47 +0200 Subject: Try harder to get the RenderWidgetHostViewQt (cherry picked from commit ec6c5ebb699c5cf3cdc56f0f9f48c2e5af0e9a29) --- qutebrowser/browser/webengine/webenginetab.py | 2 +- 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. -- cgit v1.2.3-54-g00ecf