Compare commits
	
		
			2 Commits
		
	
	
		
			3.21.4
			...
			wip/garnac
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 708a198abf | ||
|   | 8270d84b80 | 
| @@ -477,6 +477,64 @@ const TilePreview = new Lang.Class({ | ||||
|     } | ||||
| }); | ||||
|  | ||||
| const TouchpadWorkspaceSwitchAction = new Lang.Class({ | ||||
|     Name: 'TouchpadWorkspaceSwitchAction', | ||||
|  | ||||
|     _checkActivated: function() { | ||||
|         const MOTION_THRESHOLD = 50; | ||||
|         let allowedModes = Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW; | ||||
|         let dir; | ||||
|  | ||||
|         if ((allowedModes & Main.actionMode) == 0) | ||||
|             return; | ||||
|  | ||||
|         if (this._dy < MOTION_THRESHOLD) | ||||
|             dir = Meta.MotionDirection.DOWN; | ||||
|         else if (this._dy > MOTION_THRESHOLD) | ||||
|             dir = Meta.MotionDirection.UP; | ||||
|         else if (this._dx < MOTION_THRESHOLD) | ||||
|             dir = Meta.MotionDirection.RIGHT; | ||||
|         else if (this._dx > MOTION_THRESHOLD) | ||||
|             dir = Meta.MotionDirection.LEFT; | ||||
|         else | ||||
|             return; | ||||
|  | ||||
|         this.emit('activated', dir); | ||||
|     }, | ||||
|  | ||||
|     _handleEvent: function(actor, event) { | ||||
|         if (event.type() != Clutter.EventType.TOUCHPAD_SWIPE_BEGIN && | ||||
|             event.type() != Clutter.EventType.TOUCHPAD_SWIPE_UPDATE && | ||||
|             event.type() != Clutter.EventType.TOUCHPAD_SWIPE_END) | ||||
|             return Clutter.EVENT_PROPAGATE; | ||||
|  | ||||
|         if (event.get_gesture_swipe_finger_count() != 4) | ||||
|             return Clutter.EVENT_PROPAGATE; | ||||
|  | ||||
|         if (event.type() == Clutter.EventType.TOUCHPAD_SWIPE_UPDATE) { | ||||
|             let [dx, dy] = event.get_gesture_motion_delta(event); | ||||
|  | ||||
|             this._dx += dx; | ||||
|             this._dy += dy; | ||||
|         } else { | ||||
|             if (event.type() == Clutter.EventType.TOUCHPAD_SWIPE_END) | ||||
|                 this._checkActivated(); | ||||
|  | ||||
|             this._dx = 0; | ||||
|             this._dy = 0; | ||||
|         } | ||||
|  | ||||
|         return Clutter.EVENT_STOP; | ||||
|     }, | ||||
|  | ||||
|     _init: function(actor) { | ||||
|         this._dx = 0; | ||||
|         this._dy = 0; | ||||
|         actor.connect('captured-event', Lang.bind(this, this._handleEvent)); | ||||
|     }, | ||||
| }); | ||||
| Signals.addSignalMethods(TouchpadWorkspaceSwitchAction.prototype); | ||||
|  | ||||
| const WorkspaceSwitchAction = new Lang.Class({ | ||||
|     Name: 'WorkspaceSwitchAction', | ||||
|     Extends: Clutter.SwipeAction, | ||||
| @@ -866,15 +924,22 @@ const WindowManager = new Lang.Class({ | ||||
|                                                 false, -1, 1); | ||||
|  | ||||
|         let gesture = new WorkspaceSwitchAction(); | ||||
|         gesture.connect('activated', Lang.bind(this, function(action, direction) { | ||||
|             let newWs = global.screen.get_active_workspace().get_neighbor(direction); | ||||
|             this.actionMoveWorkspace(newWs); | ||||
|         })); | ||||
|         gesture.connect('activated', Lang.bind(this, this._actionSwitchWorkspace)); | ||||
|         global.stage.add_action(gesture); | ||||
|  | ||||
|         // This is not a normal Clutter.GestureAction, doesn't need add_action() | ||||
|         gesture = new TouchpadWorkspaceSwitchAction(global.stage); | ||||
|         gesture.connect('activated', Lang.bind(this, this._actionSwitchWorkspace)); | ||||
|  | ||||
|         gesture = new AppSwitchAction(); | ||||
|         gesture.connect('activated', Lang.bind(this, this._switchApp)); | ||||
|         global.stage.add_action(gesture); | ||||
|  | ||||
|     }, | ||||
|  | ||||
|     _actionSwitchWorkspace: function(action, direction) { | ||||
|             let newWs = global.screen.get_active_workspace().get_neighbor(direction); | ||||
|             this.actionMoveWorkspace(newWs); | ||||
|     }, | ||||
|  | ||||
|     _lookupIndex: function (windows, metaWindow) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user