panel: Don't chain up to parent's allocate

The top bar handles allocating all its children itself, so there's
little value in chaining up to st_widget_allocate() and get the
default layout manager allocating all children again (and possibly
differently).

If this happens, we end up with an infinite allocation cycle with
corresponding performance penalty. Fix this by just doing and what
Shell.GenericContainer did before commit 286ffbe2b6 replaced it,
and not chain up to StWidget.

Thanks to Robert Mader for debugging the issue.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/1054
This commit is contained in:
Florian Müllner 2019-04-29 17:53:57 +00:00
parent 38da54fb02
commit d57234bec9

View File

@ -877,7 +877,7 @@ class Panel extends St.Widget {
} }
vfunc_allocate(box, flags) { vfunc_allocate(box, flags) {
super.vfunc_allocate(box, flags); this.set_allocation(box, flags);
let allocWidth = box.x2 - box.x1; let allocWidth = box.x2 - box.x1;
let allocHeight = box.y2 - box.y1; let allocHeight = box.y2 - box.y1;