I wonder if it would be better to rename __LZlateInit to __LZinstantiated (reversing the sense). It would then be false initially and would only be set true by __LZinstantiationDone. createChildren would not have to change it. __LZcallInit would only recurse into subnodes that were not already inited and were finished instantiating. I think that would achieve the same end, but make the name and logic a little simpler?
Otherwise approved. Great work! On 2009-08-13, at 18:24EDT, André Bargull wrote: > Change 20090812-bargull-C3Q by barg...@dell--p4--2-53 on 2009-08-12 > 23:52:25 > in /home/Admin/src/svn/openlaszlo/trunk > for http://svn.openlaszlo.org/openlaszlo/trunk > > Summary: improve "destroy when initializing" behaviour > > New Features: > > Bugs Fixed: LPP-8386 (constrained datapath leads to runtime errors > for ) > > Technical Reviewer: ptw > QA Reviewer: (pending) > Doc Reviewer: (pending) > > Documentation: > > Release Notes: > > Details: > Changes for LzNode: > 1) applying constraints may destroy a node (eg. by replication), > handle this case in LzNode#__LZresolveReferences() > 2) instantiating subnodes may destroy a node, handle this case in > LzNode#__LZcallInit() > 3) calling determinePlacement() may destroy a node (see ), handle > this case in LzNode#construct() > 4) you cannot store "subnodes.length" before iterating over the > subnodes in LzNode#__LZcallInit(), because the subnodes array may > change (cf. 2nd testcase from bugreport) > 5) set LzNode#__LZlateinit to "true" in LzNode#createChildren() for > all initstages, this prevents a corner case in which nodes are > inited two times (4th testcase from bugreport). Set __LZlateinit > back to "false" in LzNode#__LZinstantiationDone(), so nodes are > processed properly again. > 6) remove some cruft: > - LzNode#getAttribute(), it is deprecated since 4.1 > - the $refs-mechanism, it was scheduled to be removed in 4.1+ > - setSetters() and addSetter(), also scheduled for 4.1+ > > Changes for LzCanvas: > - all changes from LzNode#__LZcallInit() are copied over, without 2) > because canvas can't be destroyed > > > Tests: > all testcases from bugreport (swf8, swf9) > smokecheck (swf8, swf9, dhtml) > component sampler (swf8, swf9, dhtml) > > Files: > M WEB-INF/lps/lfc/core/LzNode.lzs > M WEB-INF/lps/lfc/views/LaszloCanvas.lzs > > Changeset: > http://svn.openlaszlo.org/openlaszlo/patches/20090812-bargull-C3Q.tar > _______________________________________________ Laszlo-reviews mailing list [email protected] http://www.openlaszlo.org/mailman/listinfo/laszlo-reviews
