summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Bruhin <git@the-compiler.org>2018-06-06 17:33:47 +0200
committerFlorian Bruhin <git@the-compiler.org>2018-06-06 20:30:34 +0200
commit341aa1e7002d04696ef5f1bd3d3f6523bc5885d1 (patch)
treee7cf96095ae5f87286ab0622ec20e0e90be479be
parentebf81c06aef103e6e079f6ee8aac7884ce9d7e90 (diff)
downloadqutebrowser-341aa1e7002d04696ef5f1bd3d3f6523bc5885d1.tar.gz
qutebrowser-341aa1e7002d04696ef5f1bd3d3f6523bc5885d1.zip
Try harder to get the RenderWidgetHostViewQt
(cherry picked from commit ec6c5ebb699c5cf3cdc56f0f9f48c2e5af0e9a29)
-rw-r--r--qutebrowser/browser/webengine/webenginetab.py2
-rw-r--r--qutebrowser/browser/webengine/webview.py20
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.