diff options
author | Florian Bruhin <me@the-compiler.org> | 2020-06-21 22:04:43 +0200 |
---|---|---|
committer | Florian Bruhin <me@the-compiler.org> | 2020-06-22 20:07:47 +0200 |
commit | 35ebc861767717734a4f8eb30fb1652480adb538 (patch) | |
tree | 6f05d59bf590554beb534aa03872ebb02570768b | |
parent | cb4973c6d5d4d0ccbdbeddd44bfa2b4c7aacf0ee (diff) | |
download | qutebrowser-35ebc861767717734a4f8eb30fb1652480adb538.tar.gz qutebrowser-35ebc861767717734a4f8eb30fb1652480adb538.zip |
inspector: Make detaching to a window work properly
-rw-r--r-- | qutebrowser/browser/inspector.py | 32 |
1 files changed, 20 insertions, 12 deletions
diff --git a/qutebrowser/browser/inspector.py b/qutebrowser/browser/inspector.py index a7f8134ab..fd9faa407 100644 --- a/qutebrowser/browser/inspector.py +++ b/qutebrowser/browser/inspector.py @@ -24,7 +24,7 @@ import binascii import typing import enum -from PyQt5.QtWidgets import QWidget +from PyQt5.QtWidgets import QWidget, QVBoxLayout from PyQt5.QtCore import pyqtSignal, pyqtSlot, QObject, QEvent from PyQt5.QtGui import QCloseEvent @@ -123,7 +123,7 @@ class AbstractWebInspector(QWidget): def _set_widget(self, widget: QWidget) -> None: self._widget = widget - self._layout.wrap(self, widget) + self._widget.setWindowTitle("Web Inspector") self._widget.installEventFilter(self._child_event_filter) def _load_position(self) -> Position: @@ -150,22 +150,30 @@ class AbstractWebInspector(QWidget): self._save_position(position) if position == self._position: - if self.isVisible(): - self.detach() - self.hide() - else: - self.show() + self.toggle() return self._position = position if position == Position.window: - self.setParent(None) # type: ignore - self.setWindowTitle("Web Inspector") + self.hide() + self._layout.unwrap() self._load_state_geometry() + self._widget.show() else: + self._layout.wrap(self, self._widget) self._splitter.set_inspector(self, position) - self.show() + self._widget.show() + self.show() + + def toggle(self) -> None: + """Toggle visibility of the inspector.""" + target = self._widget if self._position == Position.window else self + if target.isVisible(): + self.detach() + target.hide() + else: + target.show() def _load_state_geometry(self) -> None: """Load the geometry from the state file.""" @@ -179,13 +187,13 @@ class AbstractWebInspector(QWidget): log.misc.exception("Error while reading geometry") else: log.init.debug("Loading geometry from {!r}".format(geom)) - ok = self.restoreGeometry(geom) + ok = self._widget.restoreGeometry(geom) if not ok: log.init.warning("Error while loading geometry.") def closeEvent(self, _e: QCloseEvent) -> None: """Save the geometry and detach the inspector when closed.""" - data = self.saveGeometry().data() + data = self._widget.saveGeometry().data() geom = base64.b64encode(data).decode('ASCII') configfiles.state['inspector']['window'] = geom self.detach() |