workspaceAnimation: Stop depending on shellwm

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/605
This commit is contained in:
Alexander Mikhaylenko 2020-01-21 18:09:56 +05:00 committed by Florian Müllner
parent fa31bcaa7a
commit 6d5446e4a6
2 changed files with 20 additions and 19 deletions

View File

@ -945,6 +945,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) {
@ -1554,8 +1562,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) {

View File

@ -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));
@ -231,7 +221,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;
@ -253,15 +243,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
@ -418,6 +406,10 @@ var WorkspaceAnimationController = class {
return this._switchData !== null;
}
canCancelGesture() {
return this.isAnimating() && this._switchData.gestureActivated;
}
set movingWindow(movingWindow) {
this._movingWindow = movingWindow;
}