summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Bruhin <me@the-compiler.org>2020-06-20 17:14:42 +0200
committerFlorian Bruhin <me@the-compiler.org>2020-06-22 19:46:47 +0200
commitf7385e3da929384ef6c8161f37ba640a9d18daa8 (patch)
tree7f0e591e8668902a5c8877f531acc2d05874d133
parent7fd9d3afa976bef4c21943ae755da5cd5d89fc47 (diff)
downloadqutebrowser-f7385e3da929384ef6c8161f37ba640a9d18daa8.tar.gz
qutebrowser-f7385e3da929384ef6c8161f37ba640a9d18daa8.zip
inspector: Detach when inspector is hidden
-rw-r--r--qutebrowser/browser/inspector.py15
-rw-r--r--qutebrowser/browser/webengine/webengineinspector.py10
-rw-r--r--qutebrowser/browser/webkit/webkitinspector.py3
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)