X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Forg%2Fxwt%2FSpecialBoxProperty.java;h=748819935139a50e235c74f78d20a6bc4ba2237e;hb=3921df8be3570de747a5c873b144909d36f4bb8a;hp=b6d2cfcd11dc5bb37bbe1803c300570ba429bad6;hpb=a57407aeb8cf8bb0cdcd42c5dda2718197743d57;p=org.ibex.core.git diff --git a/src/org/xwt/SpecialBoxProperty.java b/src/org/xwt/SpecialBoxProperty.java index b6d2cfc..7488199 100644 --- a/src/org/xwt/SpecialBoxProperty.java +++ b/src/org/xwt/SpecialBoxProperty.java @@ -258,8 +258,7 @@ class SpecialBoxProperty { boolean newshrink = stob(value); if (b.hshrink == newshrink && b.vshrink == newshrink) return; b.hshrink = b.vshrink = newshrink; - if (b.hshrink) b.set(b.dmax, 0, Box.max(b.cmin(0), b.textdim(0) + 2 * b.pad(0), b.dmin(0))); - if (b.vshrink) b.set(b.dmax, 1, Box.max(b.cmin(1), b.textdim(1) + 2 * b.pad(1), b.dmin(1))); + b.mark_for_prerender(); } }); specialBoxProperties.put("hshrink", new SpecialBoxProperty() { @@ -268,7 +267,7 @@ class SpecialBoxProperty { boolean newshrink = stob(value); if (b.hshrink == newshrink) return; b.hshrink = newshrink; - if (b.hshrink) b.set(b.dmax, 0, Box.max(b.cmin(0), b.textdim(0) + 2 * b.pad(0), b.dmin(0))); + b.mark_for_prerender(); } }); @@ -278,7 +277,7 @@ class SpecialBoxProperty { boolean newshrink = stob(value); if (b.vshrink == newshrink) return; b.vshrink = newshrink; - if (b.vshrink) b.set(b.dmax, 1, Box.max(b.cmin(1), b.textdim(1) + 2 * b.pad(1), b.dmin(1))); + b.mark_for_prerender(); } }); @@ -293,7 +292,7 @@ class SpecialBoxProperty { b.surface.setLocation(stoi(value), b.abs(1)); b.surface.centerSurfaceOnRender = false; } - b.set(abs, 0, stosh(value)); + b.set(abs, 0, stoi(value)); } }); @@ -308,7 +307,7 @@ class SpecialBoxProperty { b.surface.setLocation(b.abs(0), stoi(value)); b.surface.centerSurfaceOnRender = false; } - b.set(abs, 1, stosh(value)); + b.set(abs, 1, stoi(value)); } }); @@ -317,11 +316,11 @@ class SpecialBoxProperty { public void put(Box b, Object value) { if (b.sizetoimage) return; if (b.getParent() == null && b.surface != null) { - b.set(size, 0, Box.max(Surface.scarPicture.getWidth(), stosh(value))); + b.set(size, 0, Box.max(Surface.scarPicture.getWidth(), stoi(value))); b.mark_for_prerender(); } else { - b.set(dmax, 0, stosh(value)); - b.set(dmin, 0, stosh(value)); + b.set(dmax, 0, stoi(value)); + b.set(dmin, 0, stoi(value)); } } }); @@ -330,11 +329,11 @@ class SpecialBoxProperty { public void put(Box b, Object value) { if (b.sizetoimage) return; if (b.getParent() == null && b.surface != null) { - b.set(size, 1, Box.max(Surface.scarPicture.getHeight(), stosh(value))); + b.set(size, 1, Box.max(Surface.scarPicture.getHeight(), stoi(value))); b.mark_for_prerender(); } else { - b.set(dmax, 1, stosh(value)); - b.set(dmin, 1, stosh(value)); + b.set(dmax, 1, stoi(value)); + b.set(dmin, 1, stoi(value)); } } }); @@ -481,20 +480,13 @@ class SpecialBoxProperty { SpecialBoxProperty mouseEventHandler = new SpecialBoxProperty() { public void put(String name, Box b, Object value) { if (b.surface == null) return; - if (b.getParent() == null) { - if (b.surface.boxContainingMouse != null && b.surface.boxContainingMouse.getParent() != null) - b.surface.boxContainingMouse.put(name, b.surface.boxContainingMouse, value); - } else { - // check siblings - for(Box c = b.prevSibling(); c != null; c = c.prevSibling()) - if (c.inside(c.surface.mousex, c.surface.mousey)) { - c.put(name, c, value); - return; - } - // move up a level - if (b.getParent() != null && b.getParent().getParent() != null) - b.getParent().put(name, b.getParent(), value); - } + for(Box c = b.prevSibling(); c != null; c = c.prevSibling()) + if (c.inside(c.surface.mousex, c.surface.mousey)) { + c.put(name, c, value); + return; + } + if (b.getParent() != null) + b.getParent().put(name, b.getParent(), value); }}; specialBoxProperties.put("Press1", mouseEventHandler); @@ -595,7 +587,7 @@ class SpecialBoxProperty { public void put(Box b, Object value) { if (b.redirect == null) return; if (b.redirect != b) { put(b.redirect, value); return; } - short newval = stosh(value); + int newval = stoi(value); if (newval == b.pad(0)) return; b.set(pad, 0, newval); } @@ -610,7 +602,7 @@ class SpecialBoxProperty { public void put(Box b, Object value) { if (b.redirect == null) return; if (b.redirect != b) { put(b.redirect, value); return; } - short newval = stosh(value); + int newval = stoi(value); if (newval == b.pad(1)) return; b.set(pad, 1, newval); } @@ -624,7 +616,7 @@ class SpecialBoxProperty { public Object get(Box b) { return new Integer(b.dmin(0)); } public void put(Box b, Object value) { if (b.sizetoimage) return; - b.set(dmin, 0, stosh(value)); + b.set(dmin, 0, stoi(value)); } }); @@ -632,7 +624,7 @@ class SpecialBoxProperty { public Object get(Box b) { return new Integer(b.dmax(0)); } public void put(Box b, Object value) { if (b.sizetoimage) return; - b.set(dmax, 0, stosh(value)); + b.set(dmax, 0, stoi(value)); } }); @@ -640,7 +632,7 @@ class SpecialBoxProperty { public Object get(Box b) { return new Integer(b.dmin(1)); } public void put(Box b, Object value) { if (b.sizetoimage) return; - b.set(dmin, 1, stosh(value)); + b.set(dmin, 1, stoi(value)); } }); @@ -648,7 +640,7 @@ class SpecialBoxProperty { public Object get(Box b) { return new Integer(b.dmax(1)); } public void put(Box b, Object value) { if (b.sizetoimage) return; - b.set(dmax, 1, stosh(value)); + b.set(dmax, 1, stoi(value)); } }); @@ -665,6 +657,11 @@ class SpecialBoxProperty { public void put(Box b, Object value) { } public Object get(Box b) { return new Apply(b); } }); + + specialBoxProperties.put("id", new SpecialBoxProperty() { + public void put(Box b, Object value) { } + public Object get(Box b) { return b.id; } + }); } @@ -687,20 +684,7 @@ class SpecialBoxProperty { catch (NumberFormatException e) { return 0; } } - /** helper that converts a String to a short according to JavaScript coercion rules */ - public static short stosh(Object o) { - if (o == null) return 0; - if (o instanceof Number) return ((Number)o).shortValue(); - - String s; - if (!(o instanceof String)) s = o.toString(); - else s = (String)o; - - try { return Short.parseShort(s.indexOf('.') == -1 ? s : s.substring(0, s.indexOf('.'))); } - catch (NumberFormatException e) { return 0; } - } - - /** helper that converts a String to a short according to JavaScript coercion rules */ + /** helper that converts a String to a int according to JavaScript coercion rules */ private static class Apply extends JSObject.JSFunction { Box b;