X-Git-Url: http://git.megacz.com/?p=org.ibex.core.git;a=blobdiff_plain;f=src%2Forg%2Fibex%2FBox.java;h=b2608fb8f5bef762262b992eaeb142332814e522;hp=1f0da15a6c0c4332af9580f365b3aaa8d046a5f6;hb=d892b1ff73b696e37812afd7d78c2eaae3342a0b;hpb=e0df0b5c56f582587220a134122a07b98b831067 diff --git a/src/org/ibex/Box.java b/src/org/ibex/Box.java index 1f0da15..b2608fb 100644 --- a/src/org/ibex/Box.java +++ b/src/org/ibex/Box.java @@ -2,13 +2,7 @@ // Copyright 2004 Adam Megacz, see the COPYING file for licensing [GPL] package org.ibex; -// FEATURE: reflow before allowing js to read from width/height -// FEATURE: fastpath for rows=1/cols=1 // FEATURE: mark to reflow starting with a certain child -// FEATURE: separate mark_for_reflow and mark_for_resize -// FEATURE: make all methods final -// FEATURE: use a linked list for the "frontier" when packing -// FEATURE: or else have a way to mark a column "same as last one"? // FEATURE: reintroduce surface.abort import java.util.*; @@ -199,6 +193,9 @@ public final class Box extends JSScope implements Scheduler.Task { // Reflow //////////////////////////////////////////////////////////////////////////////////////// + /** should only be invoked on the root box */ + void reflow() { pack(); resize(x, y, maxwidth, maxheight); place(); } + private static Box[] frontier = new Box[65535]; /** pack the boxes into rows and columns, compute contentwidth */ void pack() { @@ -518,8 +515,8 @@ public final class Box extends JSScope implements Scheduler.Task { case "rows": return test(FIXED) == ROWS ? N(rows) : N(0); case "colspan": return N(colspan); case "rowspan": return N(rowspan); - case "width": return N(width); - case "height": return N(height); + case "width": getRoot().reflow(); return N(width); + case "height": getRoot().reflow(); return N(height); case "minwidth": return N(minwidth); case "maxwidth": return N(maxwidth); case "minheight": return N(minheight);