diff options
author | lyeoh <tomentosus@gmail.com> | 2021-10-18 13:30:07 -0500 |
---|---|---|
committer | lyeoh <tomentosus@gmail.com> | 2021-11-01 15:13:58 -0500 |
commit | adff7f95a402d20b17b0950055a9ee35c7d708ad (patch) | |
tree | 2d6b6075a71f5584b108711df0c15ebd52baf6e6 /qutebrowser | |
parent | f2881c7e30be12ac5cceba96003b0482b24ed692 (diff) | |
download | qutebrowser-adff7f95a402d20b17b0950055a9ee35c7d708ad.tar.gz qutebrowser-adff7f95a402d20b17b0950055a9ee35c7d708ad.zip |
Delay changing audible status
Closes #6168
Diffstat (limited to 'qutebrowser')
-rw-r--r-- | qutebrowser/mainwindow/tabbedbrowser.py | 20 |
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: |