The other way to do this is to give _calcX a dependency method. See for instance LzDataElementTrait#getFirstChild. Clearly whatever you do there will have to be updated to the new dependencies-method scheme (when we figure out what that is!). There needs to be a general, user- extensible way to write a method that computes the dependencies for another method for the case where the compiler's simple analysis is insufficient.

On 2008-03-19, at 23:57 EDT, Henry Minsky wrote:
I wanted to get rid of the deprecated "applyConstraint" call in
gridtext, which looks like

-                    var f = function() {
- this.setAttribute("x", this._calcX());
-                            }
-                    var d = [this, "width"];
-                    this.applyConstraint("x", f, d);

so I replaced it with the LZX constraint on "x"


+                  x="${ this._calcX() + this.width * 0}"


which  should be equivalent; it has a dependency on "width", but
multiplies it by zero, and calls the _calcX() method
which is what the original applyConstraint was doing.  So this should
do the same thing as the original call to applyConstraint, right?



Index: gridtext.lzx
===================================================================
--- gridtext.lzx        (revision 8323)
+++ gridtext.lzx        (working copy)
@@ -66,6 +66,7 @@
            <text visible="${!parent.editing}" width="${parent.width}"
                  resize="false"
                  y="${ parent.height /2 - this.height/2}"
+                  x="${ this._calcX() + this.width*0}"
                  fgcolor="${ parent.immediateparent.selected ?
                                    classroot._textselectedcolor:
(parent.immediateparent.highlighted ?
@@ -76,11 +77,6 @@
                <handler name="oninit">
                <![CDATA[
this.setAttribute('selectable', classroot.selectable);
-                    var f = function() {
- this.setAttribute("x", this._calcX());
-                            }
-                    var d = [this, "width"];
-                    this.applyConstraint("x", f, d);
                ]]>
                </handler>



--
Henry Minsky
Software Architect
[EMAIL PROTECTED]

Reply via email to