Skip to content

windowManager: Always reset window actors when animations are cancelled

Jonas Dreßler requested to merge verdre/gnome-shell:fix-window-animation into master

Remove all transformations from window actors after a window animation was either cancelled or finished. Right now we only do that if the transition finished successfully, which seems kind of pointless (it can probably be historically explained because the callbacks inside the "kill-window-effects" signal handler are connected to those *WindowDone() functions though and the *WindowOverwritten() functions were only added later in [1]).

This fixes a recent regression where a window animation would get cancelled and remain stuck by switching workspaces. The regression probably happened due to different behaviour of the onOverwritten callback of Tweener and the onStopped callback of Clutter transitions: For the workspace-switching animation the window actors get reparented to a temporary container, which makes Clutter transititons emit "stopped" (clutter_actor_remove_child_internal() stops transitions on its children), while Tweener would continue the animation.

[1] https://gitlab.gnome.org/GNOME/gnome-shell/commits/6dd302e5ce187d6db9266a7d6c0b94fd37fa46f4

Merge request reports