status/volume: Unmute to default volume when at 0

The stream can be muted by clicking the icon, or by dragging the
slider to 0. In the latter case, clicking the icon to unmute the
stream will not do anything (at least apparently).

Settings addresses this in its Sound panel by using a default
volume of 25% in that case, so do the same in the Shell.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/6393

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2644>
This commit is contained in:
Florian Müllner 2023-02-13 23:48:39 +01:00 committed by Marge Bot
parent 0dda7b524b
commit 7e23875bc4

View File

@ -9,6 +9,7 @@ const PopupMenu = imports.ui.popupMenu;
const {QuickSlider, SystemIndicator} = imports.ui.quickSettings; const {QuickSlider, SystemIndicator} = imports.ui.quickSettings;
const ALLOW_AMPLIFIED_VOLUME_KEY = 'allow-volume-above-100-percent'; const ALLOW_AMPLIFIED_VOLUME_KEY = 'allow-volume-above-100-percent';
const UNMUTE_DEFAULT_VOLUME = 0.25;
// Each Gvc.MixerControl is a connection to PulseAudio, // Each Gvc.MixerControl is a connection to PulseAudio,
// so it's better to make it a singleton // so it's better to make it a singleton
@ -60,7 +61,13 @@ const StreamSlider = GObject.registerClass({
if (!this._stream) if (!this._stream)
return; return;
this._stream.change_is_muted(!this._stream.is_muted); const {isMuted} = this._stream;
if (isMuted && this._stream.volume === 0) {
this._stream.volume =
UNMUTE_DEFAULT_VOLUME * this._control.get_vol_max_norm();
this._stream.push_volume();
}
this._stream.change_is_muted(!isMuted);
}); });
this._deviceItems = new Map(); this._deviceItems = new Map();