diff options
-rw-r--r-- | doc/changelog.asciidoc | 6 | ||||
-rw-r--r-- | qutebrowser/browser/webengine/webengineinspector.py | 15 | ||||
-rw-r--r-- | qutebrowser/browser/webengine/webenginesettings.py | 12 | ||||
-rw-r--r-- | qutebrowser/mainwindow/tabwidget.py | 12 | ||||
-rw-r--r-- | scripts/dev/check_coverage.py | 2 |
5 files changed, 36 insertions, 11 deletions
diff --git a/doc/changelog.asciidoc b/doc/changelog.asciidoc index feb22cb5e..cd6a0a7c3 100644 --- a/doc/changelog.asciidoc +++ b/doc/changelog.asciidoc @@ -69,6 +69,9 @@ Changed - If JavaScript is disabled globally, `file://*` now doesn't automatically have it enabled anymore. Run `:set -u file://* content.javascript.enabled true` to restore the previous behavior. +- Settings with URL patterns can now be used to affect the behavior of the + QtWebEngine inspector. Note that the underlying URL is `chrome-devtools://*` + from Qt 5.11 to Qt 5.13, but `devtools://*` with Qt 5.14. - Performance improvements for the following areas: * Adding settings with URL patterns * Matching of settings using URL patterns @@ -90,6 +93,9 @@ Fixed javascript being enabled for `qute://` and `chrome://` pages) anymore. - The `qute-lastpass` userscript now stops prompting for passwords when cancelling the password input. +- The tab hover text now shows ampersands (&) correctly. +- With QtWebEngine and Qt >= 5.11, the inspector now shows its icons correctly + even if loading of images is disabled via the `content.images` setting. - Various improvements for URL/searchengine detection: - Strings with a dot but with characters not allowed in a URL (e.g. an underscore) are now not treated as URL anymore. diff --git a/qutebrowser/browser/webengine/webengineinspector.py b/qutebrowser/browser/webengine/webengineinspector.py index 4bf72502c..009b0df1b 100644 --- a/qutebrowser/browser/webengine/webengineinspector.py +++ b/qutebrowser/browser/webengine/webengineinspector.py @@ -25,6 +25,7 @@ from PyQt5.QtCore import QUrl from PyQt5.QtWebEngineWidgets import QWebEngineView, QWebEngineSettings from qutebrowser.browser import inspector +from qutebrowser.browser.webengine import webenginesettings class WebEngineInspector(inspector.AbstractWebInspector): @@ -35,8 +36,7 @@ class WebEngineInspector(inspector.AbstractWebInspector): super().__init__(parent) self.port = None view = QWebEngineView() - settings = view.settings() - settings.setAttribute(QWebEngineSettings.JavascriptEnabled, True) + self._settings = webenginesettings.WebEngineSettings(view.settings()) self._set_widget(view) def _inspect_old(self, page): @@ -47,16 +47,21 @@ class WebEngineInspector(inspector.AbstractWebInspector): raise inspector.WebInspectorError( "QtWebEngine inspector is not enabled. See " "'qutebrowser --help' for details.") - url = QUrl('http://localhost:{}/'.format(port)) + + # We're lying about the URL here a bit, but this way, URL patterns for + # Qt 5.11/5.12/5.13 also work in this case. + self._settings.update_for_url(QUrl('chrome-devtools://devtools')) if page is None: self._widget.load(QUrl('about:blank')) else: - self._widget.load(url) + self._widget.load(QUrl('http://localhost:{}/'.format(port))) def _inspect_new(self, page): """Set up the inspector for Qt >= 5.11.""" - self._widget.page().setInspectedPage(page) + inspector_page = self._widget.page() + inspector_page.setInspectedPage(page) + self._settings.update_for_url(inspector_page.requestedUrl()) def inspect(self, page): try: diff --git a/qutebrowser/browser/webengine/webenginesettings.py b/qutebrowser/browser/webengine/webenginesettings.py index fcdbd7d7e..174564c39 100644 --- a/qutebrowser/browser/webengine/webenginesettings.py +++ b/qutebrowser/browser/webengine/webenginesettings.py @@ -351,7 +351,7 @@ def _init_site_specific_quirks(): user_agents = { 'https://web.whatsapp.com/': no_qtwe_ua, - 'https://accounts.google.com/ServiceLogin': firefox_ua, + 'https://accounts.google.com/*': firefox_ua, 'https://*.slack.com/*': new_chrome_ua, 'https://docs.google.com/*': firefox_ua, } @@ -365,6 +365,15 @@ def _init_site_specific_quirks(): hide_userconfig=True) +def _init_devtools_settings(): + """Make sure the devtools always get images/JS permissions.""" + for setting in ['content.javascript.enabled', 'content.images']: + for pattern in ['chrome-devtools://*', 'devtools://*']: + config.instance.set_obj(setting, True, + pattern=urlmatch.UrlPattern(pattern), + hide_userconfig=True) + + def init(args): """Initialize the global QWebSettings.""" if (args.enable_webengine_inspector and @@ -382,6 +391,7 @@ def init(args): global_settings.init_settings() _init_site_specific_quirks() + _init_devtools_settings() def shutdown(): diff --git a/qutebrowser/mainwindow/tabwidget.py b/qutebrowser/mainwindow/tabwidget.py index 6e3c00aad..25ecc69b8 100644 --- a/qutebrowser/mainwindow/tabwidget.py +++ b/qutebrowser/mainwindow/tabwidget.py @@ -116,7 +116,13 @@ class TabWidget(QTabWidget): def set_page_title(self, idx, title): """Set the tab title user data.""" - self.tabBar().set_tab_data(idx, 'page-title', title) + tabbar = self.tabBar() + + if config.cache['tabs.tooltips']: + # always show only plain title in tooltips + tabbar.setTabToolTip(idx, title) + + tabbar.set_tab_data(idx, 'page-title', title) self.update_tab_title(idx) def page_title(self, idx): @@ -153,10 +159,6 @@ class TabWidget(QTabWidget): if tabbar.tabText(idx) != title: tabbar.setTabText(idx, title) - if config.cache['tabs.tooltips']: - # always show only plain title in tooltips - tabbar.setTabToolTip(idx, fields['current_title']) - def get_tab_fields(self, idx): """Get the tab field data.""" tab = self.widget(idx) diff --git a/scripts/dev/check_coverage.py b/scripts/dev/check_coverage.py index fbf6cb954..7798415a5 100644 --- a/scripts/dev/check_coverage.py +++ b/scripts/dev/check_coverage.py @@ -147,6 +147,8 @@ PERFECT_FILES = [ ('tests/unit/config/test_config.py', 'config/config.py'), + ('tests/unit/config/test_stylesheet.py', + 'config/stylesheet.py'), ('tests/unit/config/test_configdata.py', 'config/configdata.py'), ('tests/unit/config/test_configexc.py', |