diff options
author | Florian Bruhin <me@the-compiler.org> | 2018-09-28 16:37:58 +0200 |
---|---|---|
committer | Florian Bruhin <me@the-compiler.org> | 2018-09-28 16:40:08 +0200 |
commit | 18ed790c881185c65cae0c8974368222e5253041 (patch) | |
tree | f1d32b7de5788fe5814f6385480f2d589f26a3b6 | |
parent | 6be4ee2ff3cdd0a1bfc20634d8c3b592565cf1d7 (diff) | |
download | qutebrowser-18ed790c881185c65cae0c8974368222e5253041.tar.gz qutebrowser-18ed790c881185c65cae0c8974368222e5253041.zip |
Don't touch mute status after the user changed it
-rw-r--r-- | qutebrowser/browser/browsertab.py | 14 | ||||
-rw-r--r-- | qutebrowser/browser/commands.py | 2 | ||||
-rw-r--r-- | qutebrowser/browser/webengine/webenginetab.py | 16 | ||||
-rw-r--r-- | qutebrowser/browser/webkit/webkittab.py | 2 |
4 files changed, 26 insertions, 8 deletions
diff --git a/qutebrowser/browser/browsertab.py b/qutebrowser/browser/browsertab.py index 72c289eca..29970a65d 100644 --- a/qutebrowser/browser/browsertab.py +++ b/qutebrowser/browser/browsertab.py @@ -673,16 +673,22 @@ class AbstractAudio(QObject): self._widget = None self._tab = tab - def set_muted(self, muted: bool): - """Set this tab as muted or not.""" + def set_muted(self, muted: bool, override: bool = False): + """Set this tab as muted or not. + + Arguments: + override: If set to True, muting/unmuting was done manually and + overrides future automatic mute/unmute changes based on + the URL. + """ raise NotImplementedError def is_muted(self): """Whether this tab is muted.""" raise NotImplementedError - def toggle_muted(self): - self.set_muted(not self.is_muted()) + def toggle_muted(self, *, override: bool = False): + self.set_muted(not self.is_muted(), override=override) def is_recently_audible(self): """Whether this tab has had audio playing recently.""" diff --git a/qutebrowser/browser/commands.py b/qutebrowser/browser/commands.py index bb5a46e9a..d4e896cf7 100644 --- a/qutebrowser/browser/commands.py +++ b/qutebrowser/browser/commands.py @@ -2237,6 +2237,6 @@ class CommandDispatcher: if tab is None: return try: - tab.audio.toggle_muted() + tab.audio.toggle_muted(override=True) except browsertab.WebTabError as e: raise cmdexc.CommandError(e) diff --git a/qutebrowser/browser/webengine/webenginetab.py b/qutebrowser/browser/webengine/webenginetab.py index e4bac57b5..b0dba34fa 100644 --- a/qutebrowser/browser/webengine/webenginetab.py +++ b/qutebrowser/browser/webengine/webenginetab.py @@ -637,7 +637,16 @@ class WebEngineElements(browsertab.AbstractElements): class WebEngineAudio(browsertab.AbstractAudio): - """QtWebEngine implemementations related to audio/muting.""" + """QtWebEngine implemementations related to audio/muting. + + Attributes: + _overridden: Whether the user toggled muting manually. + If that's the case, we leave it alone. + """ + + def __init__(self, tab, parent=None): + super().__init__(tab, parent) + self._overridden = False def _connect_signals(self): page = self._widget.page() @@ -645,7 +654,8 @@ class WebEngineAudio(browsertab.AbstractAudio): page.recentlyAudibleChanged.connect(self.recently_audible_changed) self._tab.url_changed.connect(self._on_url_changed) - def set_muted(self, muted: bool): + def set_muted(self, muted: bool, override: bool = False): + self._overridden = override page = self._widget.page() page.setAudioMuted(muted) @@ -659,6 +669,8 @@ class WebEngineAudio(browsertab.AbstractAudio): @pyqtSlot(QUrl) def _on_url_changed(self, url): + if self._overridden: + return mute = config.instance.get('content.mute', url=url) self.set_muted(mute) diff --git a/qutebrowser/browser/webkit/webkittab.py b/qutebrowser/browser/webkit/webkittab.py index a2c7ee2a2..1c37649cd 100644 --- a/qutebrowser/browser/webkit/webkittab.py +++ b/qutebrowser/browser/webkit/webkittab.py @@ -637,7 +637,7 @@ class WebKitAudio(browsertab.AbstractAudio): """Dummy handling of audio status for QtWebKit.""" - def set_muted(self, muted: bool): + def set_muted(self, muted: bool, override: bool = False): raise browsertab.WebTabError('Muting is not supported on QtWebKit!') def is_muted(self): |