Will Thompson 93b33cf314 overviewControls: Make sure startup animation completes
In commit e69da36095d5093c1c7bec7a9c96c079c0b837f9, Florian Müllner
wrote:

> We currently complete the animation using an onComplete handler,
> which only runs if the corresponding transition was stopped when
> finished.
>
> While it is unexpected that the transition is interrupted, it can
> apparently happen under some circumstances (like VMs with qlx).
> The consequences of that are pretty bad, mainly due to the cover
> pane that prevents input during the animation not getting removed.
>
> Address this by always completing the animation when the transition
> is stopped, regardless of whether it completed or not.

There are effectively four branches of the startup animation:

1. if Meta.is_restart() is true, no animation is run on startup; I
   believe this is the X11-only case of restarting the shell
   mid-session.
2. if Main.sessionMode.isGreeter is true, just the panel is eased onto
   the screen; this is the GDM case.
3. if Main.sessionMode.hasOverview is true, then a whole sequence of
   animations are run; this is the normal session case.
4. otherwise, the whole UI zooms in to full size, and from full
   transparency to full opacity; this is the Initial Setup case.

The fix above handles cases 2 and 4, but not 3. This patch applies the
same fix to case 3, so that the callback is always called on session
startup even if the transition is interrupted.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3422>
2024-07-19 18:57:18 +00:00
..