Commit 8d4855f1 authored by Jasper St. Pierre's avatar Jasper St. Pierre
Browse files

volume: Add smooth scrolling to adjust output volume

Allow users to smoothly scroll on the volume indicator icon
to adjust the volume. Do this by simply passing the scroll
event to the slider inside the menu.

https://bugzilla.gnome.org/show_bug.cgi?id=687573
parent 7d4e14f3
......@@ -636,7 +636,7 @@ const PopupSliderMenuItem = new Lang.Class({
return true;
},
_onScrollEvent: function (actor, event) {
scroll: function(event) {
let direction = event.get_scroll_direction();
let delta;
......@@ -655,10 +655,15 @@ const PopupSliderMenuItem = new Lang.Class({
}
this._value = Math.min(Math.max(0, this._value + delta), 1);
this._slider.queue_repaint();
this.emit('value-changed', this._value);
},
_onScrollEvent: function(actor, event) {
this.scroll(event);
},
_motionEvent: function(actor, event) {
let absX, absY;
[absX, absY] = event.get_coords();
......
......@@ -69,26 +69,8 @@ const VolumeMenu = new Lang.Class({
this._onControlStateChanged();
},
scroll: function(direction) {
let currentVolume = this._output.volume;
if (direction == Clutter.ScrollDirection.DOWN) {
let prev_muted = this._output.is_muted;
this._output.volume = Math.max(0, currentVolume - this._volumeMax * VOLUME_ADJUSTMENT_STEP);
if (this._output.volume < 1) {
this._output.volume = 0;
if (!prev_muted)
this._output.change_is_muted(true);
}
this._output.push_volume();
}
else if (direction == Clutter.ScrollDirection.UP) {
this._output.volume = Math.min(this._volumeMax, currentVolume + this._volumeMax * VOLUME_ADJUSTMENT_STEP);
this._output.change_is_muted(false);
this._output.push_volume();
}
this._notifyVolumeChange();
scroll: function(event) {
this._outputSlider.scroll(event);
},
_onControlStateChanged: function() {
......@@ -279,6 +261,6 @@ const Indicator = new Lang.Class({
},
_onScrollEvent: function(actor, event) {
this._volumeMenu.scroll(event.get_scroll_direction());
this._volumeMenu.scroll(event);
}
});
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment