summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Bruhin <me@the-compiler.org>2018-09-28 16:37:58 +0200
committerFlorian Bruhin <me@the-compiler.org>2018-09-28 16:40:08 +0200
commit18ed790c881185c65cae0c8974368222e5253041 (patch)
treef1d32b7de5788fe5814f6385480f2d589f26a3b6
parent6be4ee2ff3cdd0a1bfc20634d8c3b592565cf1d7 (diff)
downloadqutebrowser-18ed790c881185c65cae0c8974368222e5253041.tar.gz
qutebrowser-18ed790c881185c65cae0c8974368222e5253041.zip
Don't touch mute status after the user changed it
-rw-r--r--qutebrowser/browser/browsertab.py14
-rw-r--r--qutebrowser/browser/commands.py2
-rw-r--r--qutebrowser/browser/webengine/webenginetab.py16
-rw-r--r--qutebrowser/browser/webkit/webkittab.py2
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):