Fix fuzziness for application icons

- Center the icon texture in the area allocated for it, and always give
  the nominal size - avoid off-by-one scaling if the parent allocated
  a little less or more size than we wanted.
- Use Math.floor() when centering horizontally to avoid allocation
  at a half pixel.

https://bugzilla.gnome.org/show_bug.cgi?id=642124
This commit is contained in:
Owen W. Taylor 2011-02-11 14:37:27 -05:00
parent e5130877e7
commit 01b646169c

View File

@ -63,6 +63,7 @@ BaseIcon.prototype = {
let iconSize = availHeight; let iconSize = availHeight;
let [iconMinHeight, iconNatHeight] = this._iconBin.get_preferred_height(-1); let [iconMinHeight, iconNatHeight] = this._iconBin.get_preferred_height(-1);
let [iconMinWidth, iconNatWidth] = this._iconBin.get_preferred_width(-1);
let preferredHeight = iconNatHeight; let preferredHeight = iconNatHeight;
let childBox = new Clutter.ActorBox(); let childBox = new Clutter.ActorBox();
@ -82,12 +83,10 @@ BaseIcon.prototype = {
this._name.allocate(childBox, flags); this._name.allocate(childBox, flags);
} }
let iconPadding = (availWidth - iconSize) / 2; childBox.x1 = Math.floor((availWidth - iconNatWidth) / 2);
childBox.y1 = Math.floor((iconSize - iconNatHeight) / 2);
childBox.x1 = iconPadding; childBox.x2 = childBox.x1 + iconNatWidth;
childBox.y1 = 0; childBox.y2 = childBox.y1 + iconNatHeight;
childBox.x2 = availWidth - iconPadding;
childBox.y2 = iconSize;
this._iconBin.allocate(childBox, flags); this._iconBin.allocate(childBox, flags);
}, },