diff --git a/qutebrowser/browser/webengine/webview.py b/qutebrowser/browser/webengine/webview.py index 5652257fb..f597e960c 100644 --- a/qutebrowser/browser/webengine/webview.py +++ b/qutebrowser/browser/webengine/webview.py @@ -54,11 +54,16 @@ class WebEngineView(QWebEngineView): self.setPage(page) sip.delete(self.layout()) - self._layout = miscwidgets.WrapperLayout(self) + self._layout = miscwidgets.PseudoLayout(self) def shutdown(self): self.page().shutdown() + def resizeEvent(self, _event): + proxy = self.focusProxy() + if proxy: + proxy.setGeometry(self.rect()) + def createWindow(self, wintype): """Called by Qt when a page wants to create a new window. diff --git a/qutebrowser/misc/miscwidgets.py b/qutebrowser/misc/miscwidgets.py index f1d5e8f73..908ea6235 100644 --- a/qutebrowser/misc/miscwidgets.py +++ b/qutebrowser/misc/miscwidgets.py @@ -240,13 +240,8 @@ class WrapperLayout(QLayout): super().__init__(parent) self._widget = None - def addItem(self, item): - assert self.parent() is not None - self.wrap(self.parent(), item.widget()) - - def removeItem(self, item): - assert item.widget() == self._widget - self.unwrap() + def addItem(self, _widget): + raise utils.Unreachable def sizeHint(self): return self._widget.sizeHint() @@ -258,8 +253,7 @@ class WrapperLayout(QLayout): raise utils.Unreachable def setGeometry(self, rect): - if self._widget is not None: - self._widget.setGeometry(rect) + self._widget.setGeometry(rect) def wrap(self, container, widget): """Wrap the given widget in the given container.""" @@ -270,7 +264,22 @@ class WrapperLayout(QLayout): def unwrap(self): self._widget.setParent(None) self._widget.deleteLater() - self._widget = None + + +class PseudoLayout(QLayout): + + def addItem(self, item): + assert self.parent() is not None + item.widget().setParent(self.parent()) + + def removeItem(self, item): + item.widget().setParent(None) + + def count(self): + return 0 + + def itemAt(self, _pos): + return None class FullscreenNotification(QLabel):