projects
/
org.ibex.core.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
reflow on demand when JS reads width/height
[org.ibex.core.git]
/
src
/
org
/
ibex
/
Box.java
diff --git
a/src/org/ibex/Box.java
b/src/org/ibex/Box.java
index
1f0da15
..
b2608fb
100644
(file)
--- 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;
// 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: 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.*;
// FEATURE: reintroduce surface.abort
import java.util.*;
@@
-199,6
+193,9
@@
public final class Box extends JSScope implements Scheduler.Task {
// Reflow ////////////////////////////////////////////////////////////////////////////////////////
// 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() {
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 "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);
case "minwidth": return N(minwidth);
case "maxwidth": return N(maxwidth);
case "minheight": return N(minheight);