X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Forg%2Fibex%2FBox.java;h=6bd6ddf088e412115a8365d88e7b7cc8b2d0d890;hb=bf0e7b510f32df7da4684fd19fc55aef8156e9f5;hp=1b1038333ebff42a4e917d503565c1d0183686ba;hpb=57f0d69080cef7811a1eb3d4020b22e548be5dbf;p=org.ibex.core.git diff --git a/src/org/ibex/Box.java b/src/org/ibex/Box.java index 1b10383..6bd6ddf 100644 --- a/src/org/ibex/Box.java +++ b/src/org/ibex/Box.java @@ -166,6 +166,7 @@ public final class Box extends JSScope implements Scheduler.Task { // Instance Methods ///////////////////////////////////////////////////////////////////// + public int fontSize() { return (font == null ? DEFAULT_FONT : font).pointsize; } /** invoked when a resource needed to render ourselves finishes loading */ public void perform() throws JSExn { @@ -566,6 +567,11 @@ public final class Box extends JSScope implements Scheduler.Task { case "Enter": if (!test(STOP_UPWARD_PROPAGATION) && parent != null) parent.putAndTriggerTraps(name, value); case "Leave": if (!test(STOP_UPWARD_PROPAGATION) && parent != null) parent.putAndTriggerTraps(name, value); + case "HScroll": if (!test(STOP_UPWARD_PROPAGATION) && parent != null) + parent.putAndTriggerTraps(name, N(((Number)value).floatValue() * ((float)parent.fontSize()) / ((float)fontSize()))); + case "VScroll": if (!test(STOP_UPWARD_PROPAGATION) && parent != null) + parent.putAndTriggerTraps(name, N(((Number)value).floatValue() * ((float)parent.fontSize()) / ((float)fontSize()))); + case "_Move": propagateDownward(name, value, false); case "_Press1": propagateDownward(name, value, false); case "_Press2": propagateDownward(name, value, false); @@ -581,6 +587,8 @@ public final class Box extends JSScope implements Scheduler.Task { case "_DoubleClick3": propagateDownward(name, value, false); case "_KeyPressed": propagateDownward(name, value, false); case "_KeyReleased": propagateDownward(name, value, false); + case "_HScroll": propagateDownward(name, value, false); + case "_VScroll": propagateDownward(name, value, false); case "PosChange": return; case "SizeChange": return; @@ -681,13 +689,16 @@ public final class Box extends JSScope implements Scheduler.Task { if (wasinside || isinside) for(Box child = getChild(treeSize() - 1); child != null; child = child.prevSibling()) { boolean save_stop = child.test(STOP_UPWARD_PROPAGATION); + Object value2 = value; + if (name.equals("_HScroll") || name.equals("_VScroll")) + value2 = N(((Number)value).floatValue() * ((float)child.fontSize()) / (float)fontSize()); if (obscured || !child.inside(x - child.x, y - child.y)) { - child.propagateDownward(name, value, true); + child.propagateDownward(name, value2, true); } else try { found = true; child.clear(STOP_UPWARD_PROPAGATION); - if (name != null) child.putAndTriggerTrapsAndCatchExceptions(name, value); - else child.propagateDownward(name, value, obscured); + if (name != null) child.putAndTriggerTrapsAndCatchExceptions(name, value2); + else child.propagateDownward(name, value2, obscured); } finally { if (save_stop) child.set(STOP_UPWARD_PROPAGATION); else child.clear(STOP_UPWARD_PROPAGATION); }