diff options
author | Florian Bruhin <me@the-compiler.org> | 2020-06-20 17:14:42 +0200 |
---|---|---|
committer | Florian Bruhin <me@the-compiler.org> | 2020-06-22 19:46:47 +0200 |
commit | f7385e3da929384ef6c8161f37ba640a9d18daa8 (patch) | |
tree | 7f0e591e8668902a5c8877f531acc2d05874d133 | |
parent | 7fd9d3afa976bef4c21943ae755da5cd5d89fc47 (diff) | |
download | qutebrowser-f7385e3da929384ef6c8161f37ba640a9d18daa8.tar.gz qutebrowser-f7385e3da929384ef6c8161f37ba640a9d18daa8.zip |
inspector: Detach when inspector is hidden
-rw-r--r-- | qutebrowser/browser/inspector.py | 15 | ||||
-rw-r--r-- | qutebrowser/browser/webengine/webengineinspector.py | 10 | ||||
-rw-r--r-- | qutebrowser/browser/webkit/webkitinspector.py | 3 |
3 files changed, 23 insertions, 5 deletions
diff --git a/qutebrowser/browser/inspector.py b/qutebrowser/browser/inspector.py index b1ef1e62a..a7f8134ab 100644 --- a/qutebrowser/browser/inspector.py +++ b/qutebrowser/browser/inspector.py @@ -150,7 +150,11 @@ class AbstractWebInspector(QWidget): self._save_position(position) if position == self._position: - self.setVisible(not self.isVisible()) + if self.isVisible(): + self.detach() + self.hide() + else: + self.show() return self._position = position @@ -179,16 +183,21 @@ class AbstractWebInspector(QWidget): if not ok: log.init.warning("Error while loading geometry.") - def closeEvent(self, e: QCloseEvent) -> None: - """Save the geometry when closed.""" + def closeEvent(self, _e: QCloseEvent) -> None: + """Save the geometry and detach the inspector when closed.""" data = self.saveGeometry().data() geom = base64.b64encode(data).decode('ASCII') configfiles.state['inspector']['window'] = geom + self.detach() def inspect(self, page: QWidget) -> None: """Inspect the given QWeb(Engine)Page.""" raise NotImplementedError + def detach(self): + """Detach the inspector from the currently attached page.""" + raise NotImplementedError + @pyqtSlot() def shutdown(self): self.close() diff --git a/qutebrowser/browser/webengine/webengineinspector.py b/qutebrowser/browser/webengine/webengineinspector.py index ef025e216..053cdfaa6 100644 --- a/qutebrowser/browser/webengine/webengineinspector.py +++ b/qutebrowser/browser/webengine/webengineinspector.py @@ -78,8 +78,6 @@ class WebEngineInspector(inspector.AbstractWebInspector): self._settings.update_for_url(QUrl('chrome-devtools://devtools')) if page is None: - # FIXME can this ever happen? - # if so, shouldn't _inspect_new/inspect have typing.Optional too? self._widget.load(QUrl('about:blank')) else: self._widget.load(QUrl('http://localhost:{}/'.format(port))) @@ -95,3 +93,11 @@ class WebEngineInspector(inspector.AbstractWebInspector): self._inspect_new(page) except AttributeError: self._inspect_old(page) + + def detach(self) -> None: + inspector_page = self._widget.page() + try: + # Qt >= 5.11 + inspector_page.setInspectedPage(None) + except AttributeError: + inspector_page.load(QUrl('about:blank')) diff --git a/qutebrowser/browser/webkit/webkitinspector.py b/qutebrowser/browser/webkit/webkitinspector.py index 603a0a2bb..d7b89376d 100644 --- a/qutebrowser/browser/webkit/webkitinspector.py +++ b/qutebrowser/browser/webkit/webkitinspector.py @@ -42,3 +42,6 @@ class WebKitInspector(inspector.AbstractWebInspector): settings = QWebSettings.globalSettings() settings.setAttribute(QWebSettings.DeveloperExtrasEnabled, True) self._widget.setPage(page) + + def detach(self) -> None: + self._widget.setPage(None) |