overview: Start animation after setting coverPane initial state

Since commit 7bd98f3f5f the onComplete callback
is called right away when animations are disabled. As side effect, now
this._coverPane gets shown/hidden in the wrong order. Start the animation after
setting this._coverPane initial state, so that the animation callback can set the
this._coverPane final state without it being overwritten later.

Move the animation also after emitting the showing and hiding signals. So that the
order showing -> shown and hiding -> hidden is still preserved when animations are
disabled.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/6096
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2532>
This commit is contained in:
Alessandro Bono 2022-11-06 12:17:15 +01:00 committed by Marge Bot
parent f23ca85f79
commit cf47b4a347

View File

@ -519,13 +519,13 @@ var Overview = class extends Signals.EventEmitter {
Meta.disable_unredirect_for_display(global.display); Meta.disable_unredirect_for_display(global.display);
this._overview.prepareToEnterOverview();
this._overview.animateToOverview(state, () => this._showDone());
Main.layoutManager.overviewGroup.set_child_above_sibling( Main.layoutManager.overviewGroup.set_child_above_sibling(
this._coverPane, null); this._coverPane, null);
this._coverPane.show(); this._coverPane.show();
this._overview.prepareToEnterOverview();
this.emit('showing'); this.emit('showing');
this._overview.animateToOverview(state, () => this._showDone());
} }
_showDone() { _showDone() {
@ -573,13 +573,13 @@ var Overview = class extends Signals.EventEmitter {
this._animationInProgress = true; this._animationInProgress = true;
this._visibleTarget = false; this._visibleTarget = false;
this._overview.prepareToLeaveOverview();
this._overview.animateFromOverview(() => this._hideDone());
Main.layoutManager.overviewGroup.set_child_above_sibling( Main.layoutManager.overviewGroup.set_child_above_sibling(
this._coverPane, null); this._coverPane, null);
this._coverPane.show(); this._coverPane.show();
this._overview.prepareToLeaveOverview();
this.emit('hiding'); this.emit('hiding');
this._overview.animateFromOverview(() => this._hideDone());
} }
_hideDone() { _hideDone() {