From b9e1d917dacea99186788ac24077add7c4363ade Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Mon, 24 Jan 2011 22:31:10 +0100 Subject: [PATCH] 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 file changed, 5 insertions(+), 4 deletions(-) diff --git a/js/ui/overview.js b/js/ui/overview.js index 8f4e830fa..c4b0c4ec0 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();