From 61a7cbf016d3bf7a231170e54d9b75dc652cb4fd Mon Sep 17 00:00:00 2001 From: charlie Date: Tue, 30 Mar 2004 13:29:13 +0000 Subject: [PATCH] UNDO: Full fix for Bug 471 This patch also gives a slight speed increase due to increased efficiency at handing out slack darcs-hash:20040330132913-b408a-4f2347f8916532bb44a6902977b12f9283942814.gz --- src/org/ibex/Box.java | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/src/org/ibex/Box.java b/src/org/ibex/Box.java index 514d301..180a652 100644 --- a/src/org/ibex/Box.java +++ b/src/org/ibex/Box.java @@ -295,32 +295,30 @@ public final class Box extends JSScope implements Scheduler.Task { //#repeat col/row colspan/rowspan contentwidth/contentheight x/y width/height colMaxWidth/rowMaxHeight colWidth/rowHeight \ // HSHRINK/VSHRINK maxwidth/maxheight cols/rows minwidth/minheight colWidth/rowHeight x_slack/y_slack // PHASE 1: compute column min/max sizes + int x_slack = width; + for(int i=0; i 0 && eligible > 0;) { - int increment = max(1, x_slack / eligible); - eligible = 0; - for(short col=0, count=0; col < cols; col++) { - if (colMaxWidth[col] <= colWidth[col]) continue; - if (slacklevel + increment < colWidth[col]) { eligible++; continue; } - int diff = min(increment, min(colMaxWidth[col] - colWidth[col], slacklevel + increment - colWidth[col])); - eligible++; - colWidth[col] += diff; + for(int startslack = 0; x_slack > 0 && cols > 0 && startslack != x_slack;) { + int increment = max(1, x_slack / cols); + startslack = x_slack; + for(short col=0; col < cols; col++) { + // FIXME: double check this + int diff = min(min(colMaxWidth[col], colWidth[col] + increment) - colWidth[col], x_slack); x_slack -= diff; + colWidth[col] += diff; } - slacklevel += increment; - } + } //#end - // PHASE 3: assign childrens' actual sizes + // Phase 3: assign childrens' actual sizes for(Box child = getChild(0); child != null; child = child.nextSibling()) { if (!child.test(VISIBLE)) continue; int child_width, child_height, child_x, child_y; -- 1.7.10.4