Workaround being allocated 0x0

Because of a chain of bugs we could end up getting allocated 0x0,
and this would cause the WellGrid allocation code to be unhappy.

See http://bugzilla.openedhand.com/show_bug.cgi?id=1831

Simply treat 0 as "unlimited" i.e. equivalent to -1.

https://bugzilla.gnome.org/show_bug.cgi?id=597586
This commit is contained in:
Colin Walters 2009-10-06 14:07:40 -04:00
parent 53fbabe2ca
commit d120d03de9

View File

@ -695,7 +695,10 @@ WellGrid.prototype = {
return [0, WELL_DEFAULT_COLUMNS, 0, 0]; return [0, WELL_DEFAULT_COLUMNS, 0, 0];
let nColumns = 0; let nColumns = 0;
let usedWidth = 0; let usedWidth = 0;
if (forWidth < 0) { // Big.Box will allocate us at 0x0 if we are not visible; this is probably a
// Big.Box bug but it can't be fixed because if children are skipped in allocate()
// Clutter gets confused (see http://bugzilla.openedhand.com/show_bug.cgi?id=1831)
if (forWidth <= 0) {
nColumns = WELL_DEFAULT_COLUMNS; nColumns = WELL_DEFAULT_COLUMNS;
} else { } else {
while (nColumns < WELL_DEFAULT_COLUMNS && while (nColumns < WELL_DEFAULT_COLUMNS &&
@ -720,7 +723,7 @@ WellGrid.prototype = {
let rows = Math.ceil(children.length / nColumns); let rows = Math.ceil(children.length / nColumns);
let itemWidth; let itemWidth;
if (forWidth < 0) { if (forWidth <= 0) {
itemWidth = itemNaturalWidth; itemWidth = itemNaturalWidth;
} else { } else {
itemWidth = Math.floor(forWidth / nColumns); itemWidth = Math.floor(forWidth / nColumns);