From: Daniel van Vugt Date: Wed, 31 Mar 2021 17:59:09 +0800 Subject: layout: Try to allocate before getting size of tracked actors Because we're about to `get_transformed_{position,size}` of each, which will return NaNs if not yet allocated. Those NaNs were finding their way into the workspace strut definitions on startup and not getting corrected until after the startup animation completed. This meant any extensions depending on the `workareas-changed` signal were getting an incorrect workarea (the whole workspace) and so were rendered out of place during the login animation. Now they're not. Author: Daniel van Vugt Origin: https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1785 Bug-Ubuntu: https://launchpad.net/bugs/1917939, https://launchpad.net/bugs/1919979 Bug-GNOME: https://gitlab.gnome.org/GNOME/mutter/-/issues/1627 Forwarded: yes Last-Update: 2021-04-07 --- js/ui/layout.js | 1 + 1 file changed, 1 insertion(+) diff --git a/js/ui/layout.js b/js/ui/layout.js index 0b11d24..42c7a36 100644 --- a/js/ui/layout.js +++ b/js/ui/layout.js @@ -1026,6 +1026,7 @@ var LayoutManager = GObject.registerClass({ if (!(actorData.affectsInputRegion && wantsInputRegion) && !actorData.affectsStruts) continue; + actorData.actor.get_allocation_box(); let [x, y] = actorData.actor.get_transformed_position(); let [w, h] = actorData.actor.get_transformed_size(); x = Math.round(x);