iconGrid: Allocate preferred sizes if bigger than child size

IconGridLayout uses the biggest minimum size to allocate its
children. Next commit will make app icons with long names show
not ellipsize on hover, and it is important that the icon itself
is able to follow that.

Use preferred size if it's bigger than the minimum size.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1477
This commit is contained in:
Georges Basile Stavracas Neto 2020-10-21 15:40:20 -03:00
parent b3659221bd
commit 4fcbf6c974

View File

@ -765,7 +765,6 @@ var IconGridLayout = GObject.registerClass({
this._calculateSpacing(childSize); this._calculateSpacing(childSize);
const childBox = new Clutter.ActorBox(); const childBox = new Clutter.ActorBox();
childBox.set_size(childSize, childSize);
let nChangedIcons = 0; let nChangedIcons = 0;
@ -802,6 +801,11 @@ var IconGridLayout = GObject.registerClass({
childBox.set_origin(x, y); childBox.set_origin(x, y);
const [,, naturalWidth, naturalHeight] = item.get_preferred_size();
childBox.set_size(
Math.max(childSize, naturalWidth),
Math.max(childSize, naturalHeight));
// Only ease icons when the page size didn't change // Only ease icons when the page size didn't change
if (this._pageSizeChanged) if (this._pageSizeChanged)
item.allocate(childBox); item.allocate(childBox);