[gnome-shell] swipe-scroll: Don't eat button-release events on click



commit b9e1d917dacea99186788ac24077add7c4363ade
Author: Florian Müllner <fmuellner gnome org>
Date:   Mon Jan 24 22:31:10 2011 +0100

    swipe-scroll: Don't eat button-release events on click
    
    The main overview group starts capturing events on button-press
    events to implement swipe-scrolling. While reactive children of
    the group which handle both button-press and button-release events
    don't trigger swipe-scrolling, children that only rely on
    button-release have stopped working - at least the primary/secondary
    icons of the search entry are affected. While the capture handler
    already checks the pointer movement between press and release to
    determine whether the action should be considered a click rather
    than a drag, it still blocks the release event from propagating.
    Instead, only block release events for drag actions, but not for
    clicks.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=640493

 js/ui/overview.js |    9 +++++----
 1 files changed, 5 insertions(+), 4 deletions(-)
---
diff --git a/js/ui/overview.js b/js/ui/overview.js
index 8f4e830..c4b0c4e 100644
--- a/js/ui/overview.js
+++ b/js/ui/overview.js
@@ -324,16 +324,17 @@ Overview.prototype = {
                         newValue += difference;
                 }
 
+                let result;
+
                 // See if the user has moved the mouse enough to trigger
                 // a drag
                 let threshold = Gtk.Settings.get_default().gtk_dnd_drag_threshold;
                 if (Math.abs(stageX - this._dragStartX) < threshold &&
                     Math.abs(stageY - this._dragStartY) < threshold) {
                     // no motion? It's a click!
-                    this.emit('swipe-scroll-end', SwipeScrollResult.CLICK);
+                    result = SwipeScrollResult.CLICK;
+                    this.emit('swipe-scroll-end', result);
                 } else {
-                    let result;
-
                     if (newValue == this._dragStartValue)
                         result = SwipeScrollResult.CANCEL;
                     else
@@ -362,7 +363,7 @@ Overview.prototype = {
                 global.stage.disconnect(this._capturedEventId);
                 this._capturedEventId = 0;
 
-                return true;
+                return result != SwipeScrollResult.CLICK;
 
             case Clutter.EventType.MOTION:
                 [stageX, stageY] = event.get_coords();



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