workspacesView: Make active workspace above siblings

If there's a window flowing over the left edge in a workspace, the
animation of showing or hiding overview in the left adjacent workspace
would glitch, as the window would appear or disappear suddenly.

This commits tries to fix it by making sure the active workspace are
above other workspaces when updating workspaces or active workspace
changed in workspacesView.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/7364
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3378>
This commit is contained in:
Keyu Tao 2024-06-20 23:09:27 +08:00
parent 63153a0af1
commit ab87629241

View File

@ -440,6 +440,11 @@ class WorkspacesView extends WorkspacesViewBase {
}
}
_raiseActiveWorkspace() {
const activeWorkspace = this.getActiveWorkspace();
this.set_child_above_sibling(activeWorkspace, null);
}
_updateWorkspaces() {
let workspaceManager = global.workspace_manager;
let newNumWorkspaces = workspaceManager.n_workspaces;
@ -472,10 +477,12 @@ class WorkspacesView extends WorkspacesViewBase {
this._updateWorkspacesState();
this._updateVisibility();
this._raiseActiveWorkspace();
}
_activeWorkspaceChanged(_wm, _from, _to, _direction) {
this._scrollToActive();
this._raiseActiveWorkspace();
}
_onDestroy() {