summaryrefslogtreecommitdiff
path: root/qutebrowser/browser/webengine/webengineinspector.py
diff options
context:
space:
mode:
Diffstat (limited to 'qutebrowser/browser/webengine/webengineinspector.py')
-rw-r--r--qutebrowser/browser/webengine/webengineinspector.py47
1 files changed, 31 insertions, 16 deletions
diff --git a/qutebrowser/browser/webengine/webengineinspector.py b/qutebrowser/browser/webengine/webengineinspector.py
index 58babc70c..67158af1c 100644
--- a/qutebrowser/browser/webengine/webengineinspector.py
+++ b/qutebrowser/browser/webengine/webengineinspector.py
@@ -19,16 +19,17 @@
"""Customized QWebInspector for QtWebEngine."""
-import pathlib
+from typing import Optional
-from PyQt5.QtCore import QLibraryInfo
-from PyQt5.QtWebEngineWidgets import QWebEngineView, QWebEnginePage
-from PyQt5.QtWidgets import QWidget
+from qutebrowser.qt import machinery
+from qutebrowser.qt.webenginewidgets import QWebEngineView
+from qutebrowser.qt.webenginecore import QWebEnginePage
+from qutebrowser.qt.widgets import QWidget
from qutebrowser.browser import inspector
-from qutebrowser.browser.webengine import webenginesettings
+from qutebrowser.browser.webengine import webenginesettings, webview
from qutebrowser.misc import miscwidgets
-from qutebrowser.utils import version, usertypes
+from qutebrowser.utils import version, usertypes, qtutils
from qutebrowser.keyinput import modeman
@@ -49,9 +50,14 @@ class WebEngineInspectorView(QWebEngineView):
See WebEngineView.createWindow for details.
"""
- view = self.page().inspectedPage().view()
- assert isinstance(view, QWebEngineView), view
- return view.createWindow(wintype)
+ inspected_page = self.page().inspectedPage()
+ if machinery.IS_QT5:
+ view = inspected_page.view()
+ assert isinstance(view, QWebEngineView), view
+ return view.createWindow(wintype)
+ else: # Qt 6
+ newpage = inspected_page.createWindow(wintype)
+ return webview.WebEngineView.forPage(newpage)
class WebEngineInspector(inspector.AbstractWebInspector):
@@ -65,12 +71,7 @@ class WebEngineInspector(inspector.AbstractWebInspector):
parent: QWidget = None) -> None:
super().__init__(splitter, win_id, parent)
self._check_devtools_resources()
-
- view = WebEngineInspectorView()
- self._settings = webenginesettings.WebEngineSettings(view.settings())
- self._set_widget(view)
- page = view.page()
- page.windowCloseRequested.connect(self._on_window_close_requested)
+ self._settings: Optional[webenginesettings.WebEngineSettings] = None
def _on_window_close_requested(self) -> None:
"""Called when the 'x' was clicked in the devtools."""
@@ -92,7 +93,7 @@ class WebEngineInspector(inspector.AbstractWebInspector):
if dist is None or dist.parsed != version.Distribution.fedora:
return
- data_path = pathlib.Path(QLibraryInfo.location(QLibraryInfo.DataPath))
+ data_path = qtutils.library_path(qtutils.LibraryPath.data)
pak = data_path / 'resources' / 'qtwebengine_devtools_resources.pak'
if not pak.exists():
raise inspector.Error("QtWebEngine devtools resources not found, "
@@ -100,8 +101,22 @@ class WebEngineInspector(inspector.AbstractWebInspector):
"Fedora package.")
def inspect(self, page: QWebEnginePage) -> None:
+ if not self._widget:
+ view = WebEngineInspectorView()
+ inspector_page = QWebEnginePage(
+ page.profile(),
+ self
+ )
+ inspector_page.windowCloseRequested.connect(self._on_window_close_requested)
+ view.setPage(inspector_page)
+ self._settings = webenginesettings.WebEngineSettings(view.settings())
+ self._set_widget(view)
+
inspector_page = self._widget.page()
+ assert inspector_page.profile() == page.profile()
inspector_page.setInspectedPage(page)
+
+ assert self._settings is not None
self._settings.update_for_url(inspector_page.requestedUrl())
def _needs_recreate(self) -> bool: