I updated the change to correctly handle your new test case. Would you like to re-review it (http://svn.openlaszlo.org/openlaszlo/patches/20071105-ptw-V.tar )

I 'improved' your test case just a bit to make more sense to me:

<canvas debug="true" >
  <class name="foo" extends="node" >
    <attribute name="bar" value="123" setter="setBar(bar)" />
    <method name="setBar" args="bar" >
      this.bar = bar;
      if (this["onbar"]) {
        this.onbar.sendEvent(bar);
      }
    </method>
    <method name="provokeError" >
      this.setBar("789");
    </method>
    <method name="provokeError2" >
      this.setBar("xxx");
    </method>
  </class>
  <foo bar="456" >
    <handler name="onbar" args="bar">
      Debug.write("onbar - 1 - begin with %s", bar);
      this.provokeError();
      Debug.write("onbar - 1 - end with %s", this.bar);
    </handler>
    <handler name="onbar" args="bar">
      Debug.write("onbar - 2 - begin with %s", bar);
      this.provokeError2();
      Debug.write("onbar - 2 - end with %s", this.bar);
    </handler>
    <!-- later -->
    <handler name="oninit" reference="canvas" >
      Debug.write("-----");
      this.setBar("abc");
    </handler>
  </foo>
</canvas>

On 2007-11-06, at 19:28 EST, André Bargull wrote:

Approved.

I've got another testcase which shows a different event-handling (comparing queued and non-queued delegates), even after applying this fix, but I don't know whether it is a bit too much constructed:

<canvas debug="true" >
<class name="foo" extends="node" >
  <attribute name="bar" value="123" setter="setBar(bar)" />
    <method name="setBar" args="bar" >
    this.bar = bar;
    if (this["onbar"]) {
      this.onbar.sendEvent(bar);
    }
  </method>
    <method name="provokeError" >
    this.setBar("789");
  </method>
    <method name="provokeError2" >
    this.setBar("xxx");
  </method>
</class>
<foo bar="456" >
  <handler name="onbar" args="bar">
    Debug.write("onbar - 1 - begin with %s", bar);
    this.provokeError();
    Debug.write("onbar - 1 - end with %s", bar);
  </handler>
    <handler name="onbar" args="bar">
    Debug.write("onbar - 2 - begin with %s", bar);
    this.provokeError2();
    Debug.write("onbar - 2 - end with %s", bar);
  </handler>
    <!-- later -->
  <handler name="oninit" reference="canvas" >
    Debug.write("-----");
    this.setBar("abc");
  </handler>
</foo>
</canvas>

On 11/7/2007 12:23 AM, P T Withington wrote:
Change 20071105-ptw-V by [EMAIL PROTECTED] on 2007-11-05 15:10:35 EST
  in /Users/ptw/OpenLaszlo/ringding-2
  for http://svn.openlaszlo.org/openlaszlo/trunk

Summary: Ensure deferred events do not recurse

Bugs Fixed:
LPP-4950 'LzDelegate single-execution mechanism does not work for queued delegates'

Technical Reviewer: hminksy (pending)
QA Reviewer: [EMAIL PROTECTED] (pending)

Tests:
  Test case from bug no longer shows the event recursing.

Files:
M      WEB-INF/lps/lfc/events/LaszloEvents.lzs


Changeset: http://svn.openlaszlo.org/openlaszlo/patches/20071105-ptw-V.tar



Reply via email to