workspaceThumbnails: Delay workspace removal while collapsing

Animating a thumbnail removal while also collapsing the minimap
itself doesn't look good, so keep the stale thumbnail until the
minimap is hidden.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/3739

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1696>
This commit is contained in:
Florian Müllner 2021-02-17 09:54:14 +01:00
parent a2751a1b26
commit 7b1b04f95a

View File

@ -691,6 +691,11 @@ var ThumbnailsBox = GObject.registerClass({
global.display.connect('workareas-changed', global.display.connect('workareas-changed',
this._updatePorthole.bind(this)); this._updatePorthole.bind(this));
this.connect('notify::visible', () => {
if (!this.visible)
this._queueUpdateStates();
});
this._switchWorkspaceNotifyId = 0; this._switchWorkspaceNotifyId = 0;
this._nWorkspacesNotifyId = 0; this._nWorkspacesNotifyId = 0;
this._syncStackingId = 0; this._syncStackingId = 0;
@ -1122,6 +1127,10 @@ var ThumbnailsBox = GObject.registerClass({
if (this._animatingIndicator) if (this._animatingIndicator)
return; return;
// Likewise if we are in the process of hiding
if (!this._shouldShow && this.visible)
return;
// Then slide out any thumbnails that have been destroyed // Then slide out any thumbnails that have been destroyed
this._iterateStateThumbnails(ThumbnailState.REMOVING, thumbnail => { this._iterateStateThumbnails(ThumbnailState.REMOVING, thumbnail => {
this._setThumbnailState(thumbnail, ThumbnailState.ANIMATING_OUT); this._setThumbnailState(thumbnail, ThumbnailState.ANIMATING_OUT);