From f391d726c07eb55f1a38f5ce6c51344d0ab43722 Mon Sep 17 00:00:00 2001 From: Jordyn/The Linux Geek Date: Wed, 18 Apr 2018 15:42:15 -0500 Subject: [PATCH] Add per-domain user stylesheet support --- qutebrowser/browser/shared.py | 4 ++-- qutebrowser/browser/webengine/webenginetab.py | 14 +++++++++----- qutebrowser/config/configdata.yml | 1 + 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/qutebrowser/browser/shared.py b/qutebrowser/browser/shared.py index 8ebbe3926..3876fec6a 100644 --- a/qutebrowser/browser/shared.py +++ b/qutebrowser/browser/shared.py @@ -273,10 +273,10 @@ def get_tab(win_id, target): return tabbed_browser.tabopen(url=None, background=bg_tab) -def get_user_stylesheet(): +def get_user_stylesheet(url=None): """Get the combined user-stylesheet.""" css = '' - stylesheets = config.val.content.user_stylesheets + stylesheets = config.instance.get("content.user_stylesheets", url) for filename in stylesheets: with open(filename, 'r', encoding='utf-8') as f: diff --git a/qutebrowser/browser/webengine/webenginetab.py b/qutebrowser/browser/webengine/webenginetab.py index fdfbc5fb0..5f0952bca 100644 --- a/qutebrowser/browser/webengine/webenginetab.py +++ b/qutebrowser/browser/webengine/webenginetab.py @@ -18,7 +18,6 @@ # along with qutebrowser. If not, see . """Wrapper over a QWebEngineView.""" - import math import functools import sys @@ -796,11 +795,12 @@ class _WebEngineScripts(QObject): def _on_config_changed(self, option): if option in ['scrolling.bar', 'content.user_stylesheets']: self._init_stylesheet() - self._update_stylesheet() + url = self.url(requested=True) + self._update_stylesheet(url=url) - def _update_stylesheet(self): + def _update_stylesheet(self, url=None): """Update the custom stylesheet in existing tabs.""" - css = shared.get_user_stylesheet() + css = shared.get_user_stylesheet(url=url) code = javascript.assemble('stylesheet', 'set_css', css) self._tab.run_js_async(code) @@ -863,8 +863,9 @@ class _WebEngineScripts(QObject): Partially inspired by QupZilla: https://github.com/QupZilla/qupzilla/blob/v2.0/src/lib/app/mainapplication.cpp#L1063-L1101 """ + self._remove_early_js('stylesheet') - css = shared.get_user_stylesheet() + css = shared.get_user_stylesheet(url=None) js_code = javascript.wrap_global( 'stylesheet', utils.read_file('javascript/stylesheet.js'), @@ -1225,6 +1226,9 @@ class WebEngineTab(browsertab.AbstractTab): # the old icon is still displayed. self.icon_changed.emit(QIcon()) + url = self.url(requested=True) + self._update_stylesheet(url) + @pyqtSlot(QUrl) def _on_predicted_navigation(self, url): """If we know we're going to visit an URL soon, change the settings. diff --git a/qutebrowser/config/configdata.yml b/qutebrowser/config/configdata.yml index 49e037538..c83e0d253 100644 --- a/qutebrowser/config/configdata.yml +++ b/qutebrowser/config/configdata.yml @@ -689,6 +689,7 @@ content.user_stylesheets: valtype: File none_ok: True default: [] + supports_pattern: true desc: List of user stylesheet filenames to use. content.webgl: