[gnome-shell/wip/beniofel/gesture: 282/283] WIP: windows move as you swipe with 4 fingers



commit ccc50788029e1f9a93a49d88d0dc0cb74a392e31
Author: Ben Iofel <iofelben gmail com>
Date:   Sat Dec 24 02:27:14 2016 -0500

    WIP: windows move as you swipe with 4 fingers
    
    (not just at the end of the gesture)

 js/ui/windowManager.js  |   14 +++++++++--
 js/ui/workspacesView.js |   55 +++++++++++++++++++++++++++-------------------
 2 files changed, 43 insertions(+), 26 deletions(-)
---
diff --git a/js/ui/windowManager.js b/js/ui/windowManager.js
index eac3889..5120361 100644
--- a/js/ui/windowManager.js
+++ b/js/ui/windowManager.js
@@ -513,17 +513,25 @@ var TouchpadWorkspaceSwitchAction = new Lang.Class({
         if (event.get_touchpad_gesture_finger_count() != 4)
             return Clutter.EVENT_PROPAGATE;
 
-        if (event.get_gesture_phase() == Clutter.TouchpadGesturePhase.UPDATE) {
+        let workspacesDisplay = Main.overview.viewSelector._workspacesDisplay;
+
+        if (event.get_gesture_phase() == Clutter.TouchpadGesturePhase.BEGIN) {
+            workspacesDisplay._onPanStart();
+        } else if (event.get_gesture_phase() == Clutter.TouchpadGesturePhase.UPDATE) {
             let [dx, dy] = event.get_gesture_motion_delta(event);
 
             this._dx += dx;
             this._dy += dy;
+
+            workspacesDisplay._onPan(dy);
+        } else if (event.get_gesture_phase() == Clutter.TouchpadGesturePhase.CANCEL) {
+            workspacesDisplay._onPanCancel();
         } else {
-            if (event.get_gesture_phase() == Clutter.TouchpadGesturePhase.END)
-                this._checkActivated();
+            this._checkActivated();
 
             this._dx = 0;
             this._dy = 0;
+            workspacesDisplay._onPanEnd();
         }
 
         return Clutter.EVENT_STOP;
diff --git a/js/ui/workspacesView.js b/js/ui/workspacesView.js
index 8e08cb1..21e5b60 100644
--- a/js/ui/workspacesView.js
+++ b/js/ui/workspacesView.js
@@ -435,28 +435,14 @@ var WorkspacesDisplay = new Lang.Class({
         this.actor.bind_property('mapped', clickAction, 'enabled', GObject.BindingFlags.SYNC_CREATE);
 
         let panAction = new Clutter.PanAction({ threshold_trigger_edge: Clutter.GestureTriggerEdge.AFTER });
-        panAction.connect('pan', Lang.bind(this, this._onPan));
-        panAction.connect('gesture-begin', Lang.bind(this, function() {
-            if (this._workspacesOnlyOnPrimary) {
-                let event = Clutter.get_current_event();
-                if (this._getMonitorIndexForEvent(event) != this._primaryIndex)
-                    return false;
-            }
-
-            for (let i = 0; i < this._workspacesViews.length; i++)
-                this._workspacesViews[i].startSwipeScroll();
-            return true;
-        }));
-        panAction.connect('gesture-cancel', Lang.bind(this, function() {
-            clickAction.release();
-            for (let i = 0; i < this._workspacesViews.length; i++)
-                this._workspacesViews[i].endSwipeScroll();
-        }));
-        panAction.connect('gesture-end', Lang.bind(this, function() {
-            clickAction.release();
-            for (let i = 0; i < this._workspacesViews.length; i++)
-                this._workspacesViews[i].endSwipeScroll();
+        panAction.connect('pan', Lang.bind(this, function (action) {
+            let [dist, dx, dy] = action.get_motion_delta(0);
+            this._onPan(dy);
         }));
+        //panAction.connect('pan', Lang.bind(this, this._onPan));
+        panAction.connect('gesture-begin', Lang.bind(this, this._onPanStart));
+        panAction.connect('gesture-cancel', Lang.bind(this, this._onPanCancel));
+        panAction.connect('gesture-end', Lang.bind(this, this._onPanEnd));
         Main.overview.addAction(panAction);
         this.actor.bind_property('mapped', panAction, 'enabled', GObject.BindingFlags.SYNC_CREATE);
 
@@ -480,13 +466,36 @@ var WorkspacesDisplay = new Lang.Class({
         this._fullGeometry = null;
     },
 
-    _onPan: function(action) {
-        let [dist, dx, dy] = action.get_motion_delta(0);
+    _onPan: function(dy) {
         let adjustment = this._scrollAdjustment;
         adjustment.value -= (dy / this.actor.height) * adjustment.page_size;
         return false;
     },
 
+    _onPanStart: function() {
+        if (this._workspacesOnlyOnPrimary) {
+            let event = Clutter.get_current_event();
+            if (this._getMonitorIndexForEvent(event) != this._primaryIndex)
+                return false;
+        }
+
+        for (let i = 0; i < this._workspacesViews.length; i++)
+            this._workspacesViews[i].startSwipeScroll();
+        return true;
+    },
+
+    _onPanCancel: function() {
+        //clickAction.release();
+        for (let i = 0; i < this._workspacesViews.length; i++)
+            this._workspacesViews[i].endSwipeScroll();
+    },
+
+    _onPanEnd: function() {
+        //clickAction.release();
+        for (let i = 0; i < this._workspacesViews.length; i++)
+            this._workspacesViews[i].endSwipeScroll();
+    },
+
     navigateFocus: function(from, direction) {
         return this._getPrimaryView().actor.navigate_focus(from, direction, false);
     },


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