[gnome-shell] PopupSliderMenuItem: Implement mousewheel support



commit 3dbee0b833bd9c8de8d1c02ff842684d769457c1
Author: Adel Gadllah <adel gadllah gmail com>
Date:   Wed Oct 20 22:41:54 2010 +0200

    PopupSliderMenuItem: Implement mousewheel support
    
    Allow changing the slider's value using the mousewheel.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=632743

 js/ui/popupMenu.js |   17 +++++++++++++++++
 1 files changed, 17 insertions(+), 0 deletions(-)
---
diff --git a/js/ui/popupMenu.js b/js/ui/popupMenu.js
index 6446c32..cb17c02 100644
--- a/js/ui/popupMenu.js
+++ b/js/ui/popupMenu.js
@@ -16,6 +16,8 @@ const Tweener = imports.ui.tweener;
 const Gettext = imports.gettext.domain('gnome-shell');
 const _ = Gettext.gettext;
 
+const SLIDER_SCROLL_STEP = 0.05; /* Slider scrolling step in % */
+
 function Switch() {
     this._init.apply(this, arguments);
 }
@@ -181,6 +183,7 @@ PopupSliderMenuItem.prototype = {
         this.actor.set_child(this._slider);
         this._slider.connect('repaint', Lang.bind(this, this._sliderRepaint));
         this._slider.connect('button-press-event', Lang.bind(this, this._startDragging));
+        this._slider.connect('scroll-event', Lang.bind(this, this._onScrollEvent));
 
         this._releaseId = this._motionId = 0;
         this._dragging = false;
@@ -270,6 +273,20 @@ PopupSliderMenuItem.prototype = {
         return true;
     },
 
+    _onScrollEvent: function (actor, event) {
+        let direction = event.get_scroll_direction();
+
+        if (direction == Clutter.ScrollDirection.DOWN) {
+            this._value = Math.max(0, this._value - SLIDER_SCROLL_STEP);
+        }
+        else if (direction == Clutter.ScrollDirection.UP) {
+            this._value = Math.min(1, this._value + SLIDER_SCROLL_STEP);
+        }
+
+        this._slider.queue_repaint();
+        this.emit('value-changed', this._value);
+    },
+
     _motionEvent: function(actor, event) {
         let absX, absY;
         [absX, absY] = event.get_coords();



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]