summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Bruhin <me@the-compiler.org>2018-09-28 19:27:59 +0200
committerFlorian Bruhin <me@the-compiler.org>2018-09-28 19:27:59 +0200
commit10646cf9b8b5320df685a7659de88ee9583632bc (patch)
treeff2857cb48ee0a10a7a39ea4dfe0c908dae63430
parent2b1ebe2762071e1e8421f8f9fa2f1072d145f64d (diff)
parent6b358fe95507360c8a9891f10f87e6e721d0eb02 (diff)
downloadqutebrowser-10646cf9b8b5320df685a7659de88ee9583632bc.tar.gz
qutebrowser-10646cf9b8b5320df685a7659de88ee9583632bc.zip
Merge remote-tracking branch 'origin/pr/4186'
-rw-r--r--qutebrowser/browser/shared.py4
-rw-r--r--qutebrowser/browser/webengine/webenginetab.py21
-rw-r--r--qutebrowser/config/configdata.yml11
-rw-r--r--qutebrowser/config/configfiles.py1
4 files changed, 23 insertions, 14 deletions
diff --git a/qutebrowser/browser/shared.py b/qutebrowser/browser/shared.py
index 2398ca2e4..7dfcda4bd 100644
--- a/qutebrowser/browser/shared.py
+++ b/qutebrowser/browser/shared.py
@@ -274,7 +274,7 @@ def get_tab(win_id, target):
return tabbed_browser.tabopen(url=None, background=bg_tab)
-def get_user_stylesheet():
+def get_user_stylesheet(searching=False):
"""Get the combined user-stylesheet."""
css = ''
stylesheets = config.val.content.user_stylesheets
@@ -283,7 +283,7 @@ def get_user_stylesheet():
with open(filename, 'r', encoding='utf-8') as f:
css += f.read()
- if not config.val.scrolling.bar:
+ if not (config.val.scrolling.bar == 'always' or config.val.scrolling.bar == 'when_searching' and searching):
css += '\nhtml > ::-webkit-scrollbar { width: 0px; height: 0px; }'
return css
diff --git a/qutebrowser/browser/webengine/webenginetab.py b/qutebrowser/browser/webengine/webenginetab.py
index 40a7de9c3..ebb206ddb 100644
--- a/qutebrowser/browser/webengine/webenginetab.py
+++ b/qutebrowser/browser/webengine/webenginetab.py
@@ -162,10 +162,11 @@ class WebEngineSearch(browsertab.AbstractSearch):
back yet.
"""
- def __init__(self, parent=None):
+ def __init__(self, tab, parent=None):
super().__init__(parent)
self._flags = QWebEnginePage.FindFlags(0)
self._pending_searches = 0
+ self._tab = tab
def _find(self, text, flags, callback, caller):
"""Call findText on the widget."""
@@ -193,6 +194,7 @@ class WebEngineSearch(browsertab.AbstractSearch):
.strip())
if callback is not None:
callback(found)
+ self._tab.scripts.update_stylesheet(searching=found)
self._widget.findText(text, flags, wrapped_callback)
def search(self, text, *, ignore_case='never', reverse=False,
@@ -215,6 +217,7 @@ class WebEngineSearch(browsertab.AbstractSearch):
def clear(self):
self.search_displayed = False
self._widget.findText('')
+ self._tab.scripts.update_stylesheet(searching=False)
def prev_result(self, *, result_cb=None):
# The int() here makes sure we get a copy of the flags.
@@ -841,11 +844,11 @@ class _WebEngineScripts(QObject):
def _on_config_changed(self, option):
if option in ['scrolling.bar', 'content.user_stylesheets']:
self._init_stylesheet()
- self._update_stylesheet()
+ self.update_stylesheet()
- def _update_stylesheet(self):
+ def update_stylesheet(self, searching=False):
"""Update the custom stylesheet in existing tabs."""
- css = shared.get_user_stylesheet()
+ css = shared.get_user_stylesheet(searching=searching)
code = javascript.assemble('stylesheet', 'set_css', css)
self._tab.run_js_async(code)
@@ -1019,13 +1022,13 @@ class WebEngineTab(browsertab.AbstractTab):
self.caret = WebEngineCaret(mode_manager=mode_manager,
tab=self, parent=self)
self.zoom = WebEngineZoom(tab=self, parent=self)
- self.search = WebEngineSearch(parent=self)
+ self.search = WebEngineSearch(tab=self, parent=self)
self.printing = WebEnginePrinting(tab=self)
self.elements = WebEngineElements(tab=self)
self.action = WebEngineAction(tab=self)
self.audio = WebEngineAudio(tab=self, parent=self)
self._permissions = _WebEnginePermissions(tab=self, parent=self)
- self._scripts = _WebEngineScripts(tab=self, parent=self)
+ self.scripts = _WebEngineScripts(tab=self, parent=self)
# We're assigning settings in _set_widget
self.settings = webenginesettings.WebEngineSettings(settings=None)
self._set_widget(widget)
@@ -1034,13 +1037,13 @@ class WebEngineTab(browsertab.AbstractTab):
self._child_event_filter = None
self._saved_zoom = None
self._reload_url = None
- self._scripts.init()
+ self.scripts.init()
def _set_widget(self, widget):
# pylint: disable=protected-access
super()._set_widget(widget)
self._permissions._widget = widget
- self._scripts._widget = widget
+ self.scripts._widget = widget
def _install_event_filter(self):
fp = self._widget.focusProxy()
@@ -1433,7 +1436,7 @@ class WebEngineTab(browsertab.AbstractTab):
# pylint: disable=protected-access
self.audio._connect_signals()
self._permissions.connect_signals()
- self._scripts.connect_signals()
+ self.scripts.connect_signals()
def event_target(self):
return self._widget.render_widget()
diff --git a/qutebrowser/config/configdata.yml b/qutebrowser/config/configdata.yml
index 5bd198a75..1b7e26cc3 100644
--- a/qutebrowser/config/configdata.yml
+++ b/qutebrowser/config/configdata.yml
@@ -1282,9 +1282,14 @@ prompt.radius:
## scrolling
scrolling.bar:
- type: Bool
- default: false
- desc: Show a scrollbar.
+ type:
+ name: String
+ valid_values:
+ - always: Always show the scrollbar.
+ - never: Never show the scrollbar.
+ - when_searching: Show the scrollbar when searching for text in the webpage.
+ default: when_searching
+ desc: When to show the scrollbar.
scrolling.smooth:
type: Bool
diff --git a/qutebrowser/config/configfiles.py b/qutebrowser/config/configfiles.py
index f74c44f32..f49a40265 100644
--- a/qutebrowser/config/configfiles.py
+++ b/qutebrowser/config/configfiles.py
@@ -292,6 +292,7 @@ class YamlConfig(QObject):
self._mark_changed()
self._migrate_bool(settings, 'tabs.favicons.show', 'always', 'never')
+ self._migrate_bool(settings, 'scrolling.bar', 'when_searching', 'never')
self._migrate_bool(settings, 'qt.force_software_rendering',
'software-opengl', 'none')