From: megacz Date: Fri, 30 Jan 2004 07:37:29 +0000 (+0000) Subject: 2003/09/26 07:19:15 X-Git-Tag: RC3~548 X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=e072ecc212b652dd55fb932cd7ed715e65dcfd2b;hp=fe1024c315340ffc74c62faa8edd33cd3ef1c0da;p=org.ibex.core.git 2003/09/26 07:19:15 darcs-hash:20040130073729-2ba56-015935af96ffadd0ea5151fbd0959bb7db194712.gz --- diff --git a/src/org/xwt/Trap.java b/src/org/xwt/Trap.java index 196c445..f33f75a 100644 --- a/src/org/xwt/Trap.java +++ b/src/org/xwt/Trap.java @@ -102,8 +102,10 @@ public class Trap { } public void perform(Object val) throws JS.Exn { - if (f.getNumFormalArgs()== 0) cascade(val); - f.call(new TrapArgs(this, val)); + if (f.getNumFormalArgs() == 0) cascade(val); + TrapArgs ta = new TrapArgs(this, val); + Object ret = f.call(ta); + if (ret != Boolean.FALSE && !ta.cascadeHappened) cascade(val); } public Object cascade() { @@ -118,11 +120,12 @@ public class Trap { private static class TrapArgs extends JS.Array { private Trap t; + public boolean cascadeHappened = false; public TrapArgs(Trap t) { this.t = t; } public TrapArgs(Trap t, Object value) { this.t = t; addElement(value); } public void put(Object key, Object val) { - if (key.equals("cascade")) t.cascade(val); + if (key.equals("cascade")) { cascadeHappened = true; t.cascade(val); } else super.put(key, val); }