diff --git a/qutebrowser/browser/webkit/webkitsettings.py b/qutebrowser/browser/webkit/webkitsettings.py index cce1dcec0..612f0bd0c 100644 --- a/qutebrowser/browser/webkit/webkitsettings.py +++ b/qutebrowser/browser/webkit/webkitsettings.py @@ -120,43 +120,61 @@ class WebKitSettings(websettings.AbstractSettings): QWebSettings.FantasyFont: QFont.Fantasy, } + def _set_user_stylesheet(self): + """Set the generated user-stylesheet.""" + stylesheet = shared.get_user_stylesheet().encode('utf-8') + url = urlutils.data_url('text/css;charset=utf-8', stylesheet) + old = self._settings.userStyleSheetUrl() -def _set_user_stylesheet(settings): - """Set the generated user-stylesheet.""" - stylesheet = shared.get_user_stylesheet().encode('utf-8') - url = urlutils.data_url('text/css;charset=utf-8', stylesheet) - settings.setUserStyleSheetUrl(url) + if old == url: + return False + self._settings.setUserStyleSheetUrl(url) + return True -def _set_cookie_accept_policy(settings): - """Update the content.cookies.accept setting.""" - mapping = { - 'all': QWebSettings.AlwaysAllowThirdPartyCookies, - 'no-3rdparty': QWebSettings.AlwaysBlockThirdPartyCookies, - 'never': QWebSettings.AlwaysBlockThirdPartyCookies, - 'no-unknown-3rdparty': QWebSettings.AllowThirdPartyWithExistingCookies, - } - value = config.val.content.cookies.accept - settings.setThirdPartyCookiePolicy(mapping[value]) + def _set_cookie_accept_policy(self, value): + """Update the content.cookies.accept setting.""" + mapping = { + 'all': QWebSettings.AlwaysAllowThirdPartyCookies, + 'no-3rdparty': QWebSettings.AlwaysBlockThirdPartyCookies, + 'never': QWebSettings.AlwaysBlockThirdPartyCookies, + 'no-unknown-3rdparty': QWebSettings.AllowThirdPartyWithExistingCookies, + } + old = self._settings.thirdPartyCookiePolicy() + new = mapping[value] -def _set_cache_maximum_pages(settings): - """Update the content.cache.maximum_pages setting.""" - value = config.val.content.cache.maximum_pages - settings.setMaximumPagesInCache(value) + if old == new: + return False + self._settings.setThirdPartyCookiePolicy(new) + return True -def _update_settings(option): - """Update global settings when qwebsettings changed.""" - global_settings.update_setting(option) + def _set_cache_maximum_pages(self, value): + """Update the content.cache.maximum_pages setting.""" + old = self._settings.maximumPagesInCache() - settings = QWebSettings.globalSettings() - if option in ['scrollbar.hide', 'content.user_stylesheets']: - _set_user_stylesheet(settings) - elif option == 'content.cookies.accept': - _set_cookie_accept_policy(settings) - elif option == 'content.cache.maximum_pages': - _set_cache_maximum_pages(settings) + if old == value: + return False + + self._settings.setMaximumPagesInCache(value) + return True + + def _update_setting(self, option, value): + if option in ['scrollbar.hide', 'content.user_stylesheets']: + return self._set_user_stylesheet() + elif option == 'content.cookies.accept': + return self._set_cookie_accept_policy(value) + elif option == 'content.cache.maximum_pages': + return self._set_cache_maximum_pages(value) + else: + return super()._update_setting(option, value) + + def init_settings(self): + super().init_settings() + self.update_setting('content.user_stylesheets') + self.update_setting('content.cookies.accept') + self.update_setting('content.cache.maximum_pages') def init(_args): @@ -172,16 +190,10 @@ def init(_args): QWebSettings.setOfflineStoragePath( os.path.join(data_path, 'offline-storage')) - settings = QWebSettings.globalSettings() - _set_user_stylesheet(settings) - _set_cookie_accept_policy(settings) - _set_cache_maximum_pages(settings) - - config.instance.changed.connect(_update_settings) - global global_settings global_settings = WebKitSettings(QWebSettings.globalSettings()) global_settings.init_settings() + config.instance.changed.connect(global_settings.update_setting) def shutdown():