altTab: Set allocation before allocating children
Just as with the last commit, we should not break the assumption made by Clutter that parents have their allocation set before their children get allocated, so fix that here, too. In this case we have to fix it by chaining up to the parent vfunc override and updating the allocation once more before allocating the `this._label` child. https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/1615 (cherry picked from commit 49d6db34b74752dc11dfff7a51ad4f6ebf8cdf57)
This commit is contained in:
parent
802c2fe532
commit
4097f7943f
@ -1060,25 +1060,25 @@ class WindowSwitcher extends SwitcherPopup.SwitcherList {
|
||||
vfunc_allocate(box, flags) {
|
||||
let themeNode = this.get_theme_node();
|
||||
let contentBox = themeNode.get_content_box(box);
|
||||
const labelHeight = this._label.height;
|
||||
const totalLabelHeight =
|
||||
labelHeight + themeNode.get_padding(St.Side.BOTTOM);
|
||||
|
||||
let childBox = new Clutter.ActorBox();
|
||||
childBox.x1 = contentBox.x1;
|
||||
childBox.x2 = contentBox.x2;
|
||||
childBox.y2 = contentBox.y2;
|
||||
childBox.y1 = childBox.y2 - this._label.height;
|
||||
this._label.allocate(childBox, flags);
|
||||
|
||||
let totalLabelHeight = this._label.height + themeNode.get_padding(St.Side.BOTTOM);
|
||||
childBox.x1 = box.x1;
|
||||
childBox.x2 = box.x2;
|
||||
childBox.y1 = box.y1;
|
||||
childBox.y2 = box.y2 - totalLabelHeight;
|
||||
super.vfunc_allocate(childBox, flags);
|
||||
box.y2 -= totalLabelHeight;
|
||||
super.vfunc_allocate(box, flags);
|
||||
|
||||
// Hooking up the parent vfunc will call this.set_allocation() with
|
||||
// the height without the label height, so call it again with the
|
||||
// correct size here.
|
||||
box.y2 += totalLabelHeight;
|
||||
this.set_allocation(box, flags);
|
||||
|
||||
const childBox = new Clutter.ActorBox();
|
||||
childBox.x1 = contentBox.x1;
|
||||
childBox.x2 = contentBox.x2;
|
||||
childBox.y2 = contentBox.y2;
|
||||
childBox.y1 = childBox.y2 - labelHeight;
|
||||
this._label.allocate(childBox, flags);
|
||||
}
|
||||
|
||||
highlight(index, justOutline) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user