summaryrefslogtreecommitdiff
path: root/qutebrowser
diff options
context:
space:
mode:
authorlyeoh <tomentosus@gmail.com>2021-10-18 13:30:07 -0500
committerlyeoh <tomentosus@gmail.com>2021-11-01 15:13:58 -0500
commitadff7f95a402d20b17b0950055a9ee35c7d708ad (patch)
tree2d6b6075a71f5584b108711df0c15ebd52baf6e6 /qutebrowser
parentf2881c7e30be12ac5cceba96003b0482b24ed692 (diff)
downloadqutebrowser-adff7f95a402d20b17b0950055a9ee35c7d708ad.tar.gz
qutebrowser-adff7f95a402d20b17b0950055a9ee35c7d708ad.zip
Delay changing audible status
Closes #6168
Diffstat (limited to 'qutebrowser')
-rw-r--r--qutebrowser/mainwindow/tabbedbrowser.py20
1 files changed, 19 insertions, 1 deletions
diff --git a/qutebrowser/mainwindow/tabbedbrowser.py b/qutebrowser/mainwindow/tabbedbrowser.py
index e081284ee..2bff8508d 100644
--- a/qutebrowser/mainwindow/tabbedbrowser.py
+++ b/qutebrowser/mainwindow/tabbedbrowser.py
@@ -24,6 +24,7 @@ import functools
import weakref
import datetime
import dataclasses
+import time
from typing import (
Any, Deque, List, Mapping, MutableMapping, MutableSequence, Optional, Tuple)
@@ -33,6 +34,7 @@ from PyQt5.QtCore import pyqtSignal, pyqtSlot, QTimer, QUrl
from qutebrowser.config import config
from qutebrowser.keyinput import modeman
from qutebrowser.mainwindow import tabwidget, mainwindow
+from qutebrowser.misc import throttle
from qutebrowser.browser import signalfilter, browsertab, history
from qutebrowser.utils import (log, usertypes, utils, qtutils, objreg,
urlutils, message, jinja, version)
@@ -219,6 +221,11 @@ class TabbedBrowser(QWidget):
self.cur_fullscreen_requested.connect(self.widget.tabBar().maybe_hide)
self.widget.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
+ # WORKAROUND for recentlyAudibleChanged being emitted without delay
+ # from the moment that the audio is paused
+ self._on_audio_changed_throttle = throttle.Throttle(
+ self._on_audio_changed, 2000, parent=self)
+
# load_finished instead of load_started as WORKAROUND for
# https://bugreports.qt.io/browse/QTBUG-65223
self.cur_load_finished.connect(self._leave_modes_on_load)
@@ -363,7 +370,7 @@ class TabbedBrowser(QWidget):
tab.audio.muted_changed.connect(
functools.partial(self._on_audio_changed, tab))
tab.audio.recently_audible_changed.connect(
- functools.partial(self._on_audio_changed, tab))
+ functools.partial(self._delayed_recently_audible_changed, tab))
tab.new_tab_requested.connect(self.tabopen)
if not self.is_private:
tab.history_item_triggered.connect(
@@ -912,6 +919,17 @@ class TabbedBrowser(QWidget):
self.widget.update_tab_favicon(tab)
self.widget.update_tab_title(idx)
+ def _delayed_recently_audible_changed(self, tab, _muted):
+ if tab.audio.is_recently_audible():
+ # Cancel and ignore any pending call to remove audible status [A]
+ self._on_audio_changed_throttle.cancel()
+ self._on_audio_changed_throttle._pending_call = None
+ self._on_audio_changed_throttle._last_call_ms = None
+ else:
+ # Fake a call, to delay the upcoming call
+ self._on_audio_changed_throttle._last_call_ms = int(time.monotonic() * 1000)
+ self._on_audio_changed_throttle(tab, _muted)
+
def _on_audio_changed(self, tab, _muted):
"""Update audio field in tab when mute or recentlyAudible changed."""
try: