35 lines
1.5 KiB
Diff
35 lines
1.5 KiB
Diff
|
From: Daniel van Vugt <daniel.van.vugt@canonical.com>
|
||
|
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 <daniel.van.vugt@canonical.com>
|
||
|
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 4d5cd5a..06ed440 100644
|
||
|
--- a/js/ui/layout.js
|
||
|
+++ b/js/ui/layout.js
|
||
|
@@ -1058,6 +1058,7 @@ export const 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);
|