From e072ecc212b652dd55fb932cd7ed715e65dcfd2b Mon Sep 17 00:00:00 2001 From: megacz Date: Fri, 30 Jan 2004 07:37:29 +0000 Subject: [PATCH 1/1] 2003/09/26 07:19:15 darcs-hash:20040130073729-2ba56-015935af96ffadd0ea5151fbd0959bb7db194712.gz --- src/org/xwt/Trap.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) 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); } -- 1.7.10.4