I'm working on http://jira.openlaszlo.org/jira/browse/LPP-8058 to
reduce the number of extraneous events sent by implementing the
following optimization:
If an attribute is constrained, and the values the constraint depends
on change, but the result of the constraint does _not_ change, then
the attribute will not be updated (to the identical value) and, more
importantly, no `on` event will be sent. The change can be
demonstrated by considering the following:
<canvas layout="axis: x; spacing: 5" debug="true">
<attribute name="jay" value="2" />
<handler name="onjay">Debug.info("onjay")</handler>
<attribute name="kay" value="4" />
<handler name="onkay">Debug.info("onkay")</handler>
<attribute name="jaykay" value="${jay*kay}" />
<handler name="onjaykay">
Debug.info("onjaykay: %d * %d = %d", jay, kay, jaykay);
</handler>
<button onclick="canvas.setAttribute('jay', canvas.jay)">Same</
button>
<button onclick="canvas.setAttribute('jay', canvas.jay +
1)">Different</button>
</canvas>
In the current system, setting `jay` will _always_ cause `jaykay` to
be updated, and for there to be an `onjaykay` event. In the proposed
change, setting `jay` to the same value, will cause an `onjay` event,
but the constraint on `jaykay` will have the same result, so `jaykay`
will _not_ be updated and there will be _no_ `onjaykay` event sent.
Comments? Questions?