X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Forg%2Fxwt%2FBox.java;h=c3fec81e46597219f3743578d608f3d8144aa983;hb=b549fc8820c5f1852f7563c933a88502b02cbb7d;hp=30ec605227850e02e9bbbf7327d54e45023b0d43;hpb=63506fabf6112011cce9d0e615142512c7359317;p=org.ibex.core.git diff --git a/src/org/xwt/Box.java b/src/org/xwt/Box.java index 30ec605..c3fec81 100644 --- a/src/org/xwt/Box.java +++ b/src/org/xwt/Box.java @@ -1182,7 +1182,7 @@ public final class Box extends JS.Scope { SpecialBoxProperty gph = (SpecialBoxProperty)SpecialBoxProperty.specialBoxProperties.get(name); if (gph != null) return gph.get(this); - Object ret = super.get((Object)name); + Object ret = super.get(name); if (name.startsWith("$") && ret == null) if (Log.on) Log.logJS(this, "WARNING: attempt to access " + name + ", but no child with id=\"" + name.substring(1) + "\" found"); return ret; @@ -1249,7 +1249,7 @@ public final class Box extends JS.Scope { return; } - super.put((Object)name, value); + super.put(name, value); // a bit of a hack, since titlebar is the only 'special' property stored in JSObject if (getParent() == null && surface != null) { @@ -1504,4 +1504,31 @@ public final class Box extends JS.Scope { } - +/** this is in Box.java solely to work around a GCJ bug */ +class Apply extends JS.Callable { + Box b; + public Apply(Box b) { this.b = b; } + public Object call(JS.Array args) throws JS.Exn { + if (args.elementAt(0) instanceof String) { + String templatename = (String)args.elementAt(0); + Template t = Template.getTemplate(templatename, null); + if (t == null) { + if (Log.on) Log.logJS(this, "template " + templatename + " not found"); + } else { + if (ThreadMessage.suspendThread()) try { + JS.Callable callback = args.length() < 2 ? null : (Callable)args.elementAt(1); + t.apply(b, null, null, callback, 0, t.numUnits()); + } finally { + ThreadMessage.resumeThread(); + } + } + + } else if (args.elementAt(0) instanceof JS && !(args.elementAt(0) instanceof Box)) { + JS s = (JS)args.elementAt(0); + Object[] keys = s.keys(); + for(int j=0; j