volume: Add back sound feedback on scroll
Commit 8d4855f100
accidentally removed the volume change feedback
for scroll events. Add it back to be consistent again with moving
the slider via arrow keys, slider drags/clicks and gsd's media keys
handling.
https://gitlab.gnome.org/GNOME/gnome-shell/issues/53
This commit is contained in:
parent
7e9f30da0a
commit
5af8bf2788
@ -1,7 +1,7 @@
|
||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||
/* exported Indicator */
|
||||
|
||||
const { Clutter, Gio, GObject, Gvc, St } = imports.gi;
|
||||
const { Clutter, Gio, GLib, GObject, Gvc, St } = imports.gi;
|
||||
const Signals = imports.signals;
|
||||
|
||||
const Main = imports.ui.main;
|
||||
@ -30,6 +30,9 @@ var StreamSlider = class {
|
||||
|
||||
this.item = new PopupMenu.PopupBaseMenuItem({ activate: false });
|
||||
|
||||
this._inDrag = false;
|
||||
this._notifyVolumeChangeId = 0;
|
||||
|
||||
this._slider = new Slider.Slider(0);
|
||||
|
||||
this._soundSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.sound' });
|
||||
@ -38,7 +41,11 @@ var StreamSlider = class {
|
||||
|
||||
this._sliderChangedId = this._slider.connect('notify::value',
|
||||
this._sliderChanged.bind(this));
|
||||
this._slider.connect('drag-end', this._notifyVolumeChange.bind(this));
|
||||
this._slider.connect('drag-begin', () => (this._inDrag = true));
|
||||
this._slider.connect('drag-end', () => {
|
||||
this._inDrag = false;
|
||||
this._notifyVolumeChange();
|
||||
});
|
||||
|
||||
this._icon = new St.Icon({ style_class: 'popup-menu-icon' });
|
||||
this.item.add(this._icon);
|
||||
@ -116,6 +123,16 @@ var StreamSlider = class {
|
||||
this._stream.change_is_muted(false);
|
||||
}
|
||||
this._stream.push_volume();
|
||||
|
||||
if (!this._notifyVolumeChangeId && !this._inDrag) {
|
||||
this._notifyVolumeChangeId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 30, () => {
|
||||
this._notifyVolumeChange();
|
||||
this._notifyVolumeChangeId = 0;
|
||||
return GLib.SOURCE_REMOVE;
|
||||
});
|
||||
GLib.Source.set_name_by_id(this._notifyVolumeChangeId,
|
||||
'[gnome-shell] this._notifyVolumeChangeId');
|
||||
}
|
||||
}
|
||||
|
||||
_notifyVolumeChange() {
|
||||
|
Loading…
Reference in New Issue
Block a user