workspaceAnimation: Stop depending on shellwm

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1326
This commit is contained in:
Alexander Mikhaylenko 2020-01-21 18:09:56 +05:00 committed by Alexander Mikhaylenko
parent 1759e27ef7
commit 060cbb65f6
2 changed files with 34 additions and 18 deletions

View File

@ -984,6 +984,11 @@ var WindowManager = class {
this._workspaceAnimation = this._workspaceAnimation =
new WorkspaceAnimation.WorkspaceAnimationController(); new WorkspaceAnimation.WorkspaceAnimationController();
this._shellwm.connect('kill-switch-workspace', () => {
this._workspaceAnimation.cancelSwitchAnimation();
this._switchWorkspaceDone();
});
} }
_showPadOsd(display, device, settings, imagePath, editionMode, monitorIndex) { _showPadOsd(display, device, settings, imagePath, editionMode, monitorIndex) {
@ -1608,7 +1613,20 @@ var WindowManager = class {
return; return;
} }
this._workspaceAnimation.animateSwitch(shellwm, from, to, direction); this._switchInProgress = true;
this._workspaceAnimation.animateSwitch(from, to, direction, () => {
this._shellwm.completed_switch_workspace();
this._switchInProgress = false;
});
}
_switchWorkspaceDone() {
if (!this._switchInProgress)
return;
this._shellwm.completed_switch_workspace();
this._switchInProgress = false;
} }
_showTilePreview(shellwm, window, tileRect, monitorIndex) { _showTilePreview(shellwm, window, tileRect, monitorIndex) {

View File

@ -10,18 +10,8 @@ const WINDOW_ANIMATION_TIME = 250;
var WorkspaceAnimationController = class { var WorkspaceAnimationController = class {
constructor() { constructor() {
this._shellwm = global.window_manager;
this._movingWindow = null; this._movingWindow = null;
this._switchData = 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)); global.display.connect('restacked', this._syncStacking.bind(this));
@ -225,7 +215,7 @@ var WorkspaceAnimationController = class {
this.movingWindow = null; this.movingWindow = null;
} }
animateSwitch(shellwm, from, to, direction) { animateSwitch(from, to, direction, onComplete) {
this._prepareWorkspaceSwitch(from, to, direction); this._prepareWorkspaceSwitch(from, to, direction);
this._switchData.inProgress = true; this._switchData.inProgress = true;
@ -247,13 +237,11 @@ var WorkspaceAnimationController = class {
y: yDest, y: yDest,
duration: WINDOW_ANIMATION_TIME, duration: WINDOW_ANIMATION_TIME,
mode: Clutter.AnimationMode.EASE_OUT_CUBIC, mode: Clutter.AnimationMode.EASE_OUT_CUBIC,
onComplete: () => this._switchWorkspaceDone(shellwm), onComplete: () => {
});
}
_switchWorkspaceDone(shellwm) {
this._finishWorkspaceSwitch(this._switchData); this._finishWorkspaceSwitch(this._switchData);
shellwm.completed_switch_workspace(); onComplete();
},
});
} }
_directionForProgress(progress) { _directionForProgress(progress) {
@ -412,6 +400,16 @@ var WorkspaceAnimationController = class {
return this._switchData !== null && this._switchData.gestureActivated; return this._switchData !== null && this._switchData.gestureActivated;
} }
cancelSwitchAnimation() {
if (!this._switchData)
return;
if (this._switchData.gestureActivated)
return;
this._finishWorkspaceSwitch(this._switchData);
}
set movingWindow(movingWindow) { set movingWindow(movingWindow) {
this._movingWindow = movingWindow; this._movingWindow = movingWindow;
} }