X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Forg%2Fxwt%2FBox.java;h=c39823ed053e33d2f272f6dcc3af1d281cd771c9;hb=73b7b3d9c3e6ecd20d7f67b68971f756eafbcd4e;hp=35c0723c7d4af197608f85eacb2dabfb0d743a14;hpb=120ba254de55dfb9275155c889896c695e8d8649;p=org.ibex.core.git diff --git a/src/org/xwt/Box.java b/src/org/xwt/Box.java index 35c0723..c39823e 100644 --- a/src/org/xwt/Box.java +++ b/src/org/xwt/Box.java @@ -75,12 +75,10 @@ public final class Box extends JSScope implements Scheduler.Task { // FIXME update these // box properties can not be trapped static final String[] props = new String[] { - "fill", "stroke", "image", "tile", "fixedaspect", "text", "path", "font", "shrink", "hshrink", "vshrink", "x", "y", "width", "height", "cols", "rows", - "colspan", "rowspan", "align", "visible", "absolute", "globalx", "globaly", - "minwidth", "maxwidth", "minheight", "maxheight", - "numchildren", "redirect", "cursor", "mousex", "mousey", "xwt", "static", - "mouseinside", "root", "thisbox", "indexof" + "colspan", "rowspan", "align", "visible", "packed", "globalx", "globaly", + "minwidth", "maxwidth", "minheight", "maxheight", "indexof", "thisbox", "clip", + "numchildren", "redirect", "cursor", "mouse" }; // FIXME update these @@ -262,6 +260,12 @@ public final class Box extends JSScope implements Scheduler.Task { do { int thisx = parent == null ? 0 : this.x; int thisy = parent == null ? 0 : this.y; + + // we can't reenable this until we track + // surface-relative sizes; imagine the case of a clear + // surface with nonclear children + + /* if (texture == null && (text == null || text.equals(""))) { if ((fillcolor & 0xff000000) == 0) break; // FEATURE: more optimizations here @@ -272,6 +276,7 @@ public final class Box extends JSScope implements Scheduler.Task { break; } } + */ (parent == null ? this : parent).dirty(thisx, thisy, this.width, this.height); this.width = width; this.height = height; this.x = x; this.y = y; dirty(); @@ -438,12 +443,16 @@ public final class Box extends JSScope implements Scheduler.Task { case "aspect": return N(aspect); case "x": return (parent == null || !test(VISIBLE)) ? N(0) : N(x); case "y": return (parent == null || !test(VISIBLE)) ? N(0) : N(y); - case "width": return N(width); - case "height": return N(height); case "cols": return test(FIXED) == COLS ? N(cols) : N(0); 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 "minwidth": return N(minwidth); + case "maxwidth": return N(maxwidth); + case "minheight": return N(minheight); + case "maxheight": return N(maxheight); case "clip": return B(test(CLIP)); case "visible": return B(test(VISIBLE) && (parent == null || (parent.get("visible") == T))); case "packed": return B(test(PACKED)); @@ -456,10 +465,6 @@ public final class Box extends JSScope implements Scheduler.Task { throw new JSExn("you cannot read from the box.mouse property in background thread context"); return new Mouse(); case "numchildren": return redirect == null ? N(0) : redirect == this ? N(treeSize()) : redirect.get("numchildren"); - case "minwidth": return N(minwidth); - case "maxwidth": return N(maxwidth); - case "minheight": return N(minheight); - case "maxheight": return N(maxheight); case "redirect": return redirect == null ? null : redirect == this ? T : redirect.get("redirect"); case "Minimized": if (parent == null && getSurface() != null) return B(getSurface().minimized); default: return super.get(name); @@ -527,8 +532,6 @@ public final class Box extends JSScope implements Scheduler.Task { case "Minimized": if (parent == null && getSurface() != null) getSurface().minimized = toBoolean(value); // FEATURE case "Maximized": if (parent == null && getSurface() != null) getSurface().maximized = toBoolean(value); // FEATURE case "Close": if (parent == null && getSurface() != null) getSurface().dispose(true); - case "toback": if (parent == null && getSurface() != null && toBoolean(value)) { getSurface().toBack(); } - case "tofront": if (parent == null && getSurface() != null && toBoolean(value)) { getSurface().toFront(); } case "redirect": if (redirect == this) redirect = (Box)value; else Log.info(this, "redirect can only be set once"); case "font": font = value == null ? null : Font.getFont((Stream)value, font == null ? 10 : font.pointsize); MARK_RESIZE; dirty(); case "fontsize": font = Font.getFont(font == null ? null : font.res, toInt(value)); MARK_RESIZE; dirty();