popupMenu: fix a few width-for-height cases

specifically, non-columned menus, and span==-1

https://bugzilla.gnome.org/show_bug.cgi?id=652837
This commit is contained in:
Dan Winship 2011-09-19 16:46:38 -04:00
parent f23239a923
commit ed7d4928e5

View File

@ -244,10 +244,25 @@ PopupBaseMenuItem.prototype = {
}, },
_getPreferredHeight: function(actor, forWidth, alloc) { _getPreferredHeight: function(actor, forWidth, alloc) {
let height = 0; let height = 0, x = 0, minWidth, childWidth;
for (let i = 0; i < this._children.length; i++) { for (let i = 0; i < this._children.length; i++) {
let child = this._children[i]; let child = this._children[i];
let [min, natural] = child.actor.get_preferred_height(forWidth); if (this._columnWidths) {
if (child.span == -1) {
childWidth = 0;
for (let j = i; j < this._columnWidths.length; j++)
childWidth += this._columnWidths[j]
} else
childWidth = this._columnWidths[i];
} else {
if (child.span == -1)
childWidth = forWidth - x;
else
[minWidth, childWidth] = child.actor.get_preferred_width(-1);
}
x += childWidth;
let [min, natural] = child.actor.get_preferred_height(childWidth);
if (natural > height) if (natural > height)
height = natural; height = natural;
} }
@ -305,7 +320,10 @@ PopupBaseMenuItem.prototype = {
} }
extraWidth = availWidth - naturalWidth; extraWidth = availWidth - naturalWidth;
} else { } else {
availWidth = naturalWidth; if (child.span == -1)
availWidth = box.x2 - x;
else
availWidth = naturalWidth;
extraWidth = 0; extraWidth = 0;
} }