workspaceAnimation: Stop depending on shellwm
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1326>
This commit is contained in:
parent
bebd612a8f
commit
269c5ca957
@ -960,6 +960,11 @@ var WindowManager = class {
|
||||
|
||||
this._workspaceAnimation =
|
||||
new WorkspaceAnimation.WorkspaceAnimationController();
|
||||
|
||||
this._shellwm.connect('kill-switch-workspace', () => {
|
||||
this._workspaceAnimation.cancelSwitchAnimation();
|
||||
this._switchWorkspaceDone();
|
||||
});
|
||||
}
|
||||
|
||||
async _startX11Services(task, cancellable) {
|
||||
@ -1618,7 +1623,20 @@ var WindowManager = class {
|
||||
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) {
|
||||
|
@ -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));
|
||||
|
||||
@ -225,7 +215,7 @@ var WorkspaceAnimationController = class {
|
||||
this.movingWindow = null;
|
||||
}
|
||||
|
||||
animateSwitch(shellwm, from, to, direction) {
|
||||
animateSwitch(from, to, direction, onComplete) {
|
||||
this._prepareWorkspaceSwitch(from, to, direction);
|
||||
this._switchData.inProgress = true;
|
||||
|
||||
@ -247,15 +237,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
|
||||
@ -412,6 +400,16 @@ var WorkspaceAnimationController = class {
|
||||
return this._switchData !== null && this._switchData.gestureActivated;
|
||||
}
|
||||
|
||||
cancelSwitchAnimation() {
|
||||
if (!this._switchData)
|
||||
return;
|
||||
|
||||
if (this._switchData.gestureActivated)
|
||||
return;
|
||||
|
||||
this._finishWorkspaceSwitch(this._switchData);
|
||||
}
|
||||
|
||||
set movingWindow(movingWindow) {
|
||||
this._movingWindow = movingWindow;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user