[gnome-shell/wip/beniofel/gesture: 136/136] WIP: windows move as you swipe with 4 fingers
- From: Ben Iofel <beniofel src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell/wip/beniofel/gesture: 136/136] WIP: windows move as you swipe with 4 fingers
- Date: Wed, 8 Mar 2017 18:41:17 +0000 (UTC)
commit c6a9d9b235447d3effe98e24391d23b51204371f
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 3d0de97..3707359 100644
--- a/js/ui/windowManager.js
+++ b/js/ui/windowManager.js
@@ -533,17 +533,25 @@ const 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 2eacb5f..56b9272 100644
--- a/js/ui/workspacesView.js
+++ b/js/ui/workspacesView.js
@@ -435,28 +435,14 @@ const 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 @@ const 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]