[gnome-shell/wip/exalm/gestures2: 2/7] workspaceAnimation: Stop depending on shellwm
- From: Alexander Mikhaylenko <alexm src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell/wip/exalm/gestures2: 2/7] workspaceAnimation: Stop depending on shellwm
- Date: Fri, 3 Jul 2020 15:23:07 +0000 (UTC)
commit f6155309302c6b6c92d7e8892af6d55e19464482
Author: Alexander Mikhaylenko <exalm7659 gmail com>
Date: Tue Jan 21 18:09:56 2020 +0500
workspaceAnimation: Stop depending on shellwm
https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1326
js/ui/windowManager.js | 13 +++++++++++--
js/ui/workspaceAnimation.js | 34 +++++++++++++++++-----------------
2 files changed, 28 insertions(+), 19 deletions(-)
---
diff --git a/js/ui/windowManager.js b/js/ui/windowManager.js
index 99eefcd364..6815615dc4 100644
--- a/js/ui/windowManager.js
+++ b/js/ui/windowManager.js
@@ -984,6 +984,14 @@ var WindowManager = class {
this._workspaceAnimation =
new WorkspaceAnimation.WorkspaceAnimationController();
+
+ this._shellwm.connect('kill-switch-workspace', () => {
+ if (!this._workspaceAnimation.isAnimating() || this._workspaceAnimation.canCancelGesture())
+ return;
+
+ this._workspaceAnimation.cancelSwitchAnimation();
+ this._shellwm.completed_switch_workspace();
+ });
}
_showPadOsd(display, device, settings, imagePath, editionMode, monitorIndex) {
@@ -1608,8 +1616,9 @@ var WindowManager = class {
return;
}
- this._workspaceAnimation.animateSwitchWorkspace(shellwm, from, to,
- direction);
+ this._workspaceAnimation.animateSwitchWorkspace(from, to, direction, () => {
+ this._shellwm.completed_switch_workspace();
+ });
}
_showTilePreview(shellwm, window, tileRect, monitorIndex) {
diff --git a/js/ui/workspaceAnimation.js b/js/ui/workspaceAnimation.js
index 98666d3a9f..42794c3254 100644
--- a/js/ui/workspaceAnimation.js
+++ b/js/ui/workspaceAnimation.js
@@ -10,18 +10,8 @@ const WINDOW_ANIMATION_TIME = 250;
var WorkspaceAnimationController = class {
constructor() {
- this._shellwm = global.window_manager;
this._movingWindow = null;
-
this._switchData = null;
- this._shellwm.connect('kill-switch-workspace', shellwm => {
- if (this._switchData) {
- if (this._switchData.inProgress)
- this._switchWorkspaceDone(shellwm);
- else if (!this._switchData.gestureActivated)
- this._finishWorkspaceSwitch(this._switchData);
- }
- });
global.display.connect('restacked', this._syncStacking.bind(this));
@@ -230,7 +220,7 @@ var WorkspaceAnimationController = class {
this.movingWindow = null;
}
- animateSwitchWorkspace(shellwm, from, to, direction) {
+ animateSwitchWorkspace(from, to, direction, onComplete) {
this._prepareWorkspaceSwitch(from, to, direction);
this._switchData.inProgress = true;
@@ -252,15 +242,13 @@ var WorkspaceAnimationController = class {
y: yDest,
duration: WINDOW_ANIMATION_TIME,
mode: Clutter.AnimationMode.EASE_OUT_CUBIC,
- onComplete: () => this._switchWorkspaceDone(shellwm),
+ onComplete: () => {
+ this._finishWorkspaceSwitch(this._switchData);
+ onComplete();
+ },
});
}
- _switchWorkspaceDone(shellwm) {
- this._finishWorkspaceSwitch(this._switchData);
- shellwm.completed_switch_workspace();
- }
-
_directionForProgress(progress) {
if (global.workspace_manager.layout_rows === -1) {
return progress > 0
@@ -417,6 +405,18 @@ var WorkspaceAnimationController = class {
return this._switchData !== null;
}
+ canCancelGesture() {
+ return this.isAnimating() && this._switchData.gestureActivated;
+ }
+
+ cancelSwitchAnimation() {
+ if (!this._switchData)
+ return;
+
+ if (this._switchData.inProgress || !this._switchData.gestureActivated)
+ this._finishWorkspaceSwitch(this._switchData);
+ }
+
set movingWindow(movingWindow) {
this._movingWindow = movingWindow;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]