Created http://openlaszlo.org/jira/browse/LPP-8897 "Invalid delegate context warning for grid"

On 4/11/2010 1:56 PM, P T Withington wrote:
[Adding Laszlo-Dev because of the wider issues raised here.]

On 2010-04-10, at 02:18, Max Carlson wrote:

Approved for the tests listed.  I didn't run them all in debug mode, but I see 
constraint warnings for
examples/components/component_sampler.lzx?lzr=dhtml&debug=true

WARNING: Not creating delegate: deleted context «<text>| 
…/tabpane[3]/@content/anonymous/@header/@hcontent/gr…».$lzc$set_cascadedfont
WARNING: Not creating delegate: deleted context «<text>| 
…/tabpane[3]/@content/anonymous/@header/@hcontent/gr…».$lzc$set_cascadedfontsize
WARNING: Not creating delegate: deleted context «<text>| 
…/tabpane[3]/@content/anonymous/@header/@hcontent/gr…».$lzc$set_cascadedfontstyle
WARNING: Not creating delegate: deleted context 
…/@content/anonymous/@header/@hcontent/gridcolumn[2]/text.$lzc$set_cascadedfont
WARNING: Not creating delegate: deleted context 
…/@content/anonymous/@header/@hcontent/gridcolumn[2]/text.$lzc$set_cascadedfontsize
WARNING: Not creating delegate: deleted context 
…/@content/anonymous/@header/@hcontent/gridcolumn[2]/text.$lzc$set_cascadedfontstyle
WARNING: Not creating delegate: deleted context 
…/@content/anonymous/@header/@hcontent/gridcolumn[3]/text.$lzc$set_cascadedfont
WARNING: Not creating delegate: deleted context 
…/@content/anonymous/@header/@hcontent/gridcolumn[3]/text.$lzc$set_cascadedfontsize
WARNING: Not creating delegate: deleted context 
…/@content/anonymous/@header/@hcontent/gridcolumn[3]/text.$lzc$set_cascadedfontstyle
These warnings pre-date my change.  I suggest you file a separate bug for them 
so we can figure out whether they are innocuous or not.  I suspect they have to 
do with replication.

WARNING: Unable to create dependency on parent["resizer"].width for constraint 
…/@content/anonymous/@header/@hcontent/gridcolumn[1]/@mybutton.width='${...}'
WARNING: Unable to create dependency on parent["resizer"].width for constraint 
…/@content/anonymous/@header/@hcontent/gridcolumn[2]/@mybutton.width='${...}'
WARNING: Unable to create dependency on parent["resizer"].width for constraint 
…/@content/anonymous/@header/@hcontent/gridcolumn[3]/@mybutton.width='${...}'
This is another one of those conditional constraints that needs to be resolved 
at init time.  The component is either resizable or not and the constrain is 
different depending on that.  (If we want to make resizability dynamic, we 
would have to take a different approach.)

Which makes me realize, there is a third approach to these conditional 
constraints, which might be preferable to either of the ones described so far.  
If you really need a conditional constraint, based on the state of another 
property, the solution is to use a state.  For example, in the case of 
basecomponent._enabled you could say:

   <attribute name="_enabled" value="${this._enabled}" />
   <state applied="this._parentcomponent != null"><![CDATA[
     <attribute name="_enabled" value="this.enabled&&  
this._parentcomponent._enabled" />
   </state>

This is a heavier-weight mechanism and is wasted in the case where we know the 
condition is determined at init time.  It also has the flaw of not respecting 
class or instance overrides, so could only be used for private attributes (like 
`_enabled`, and not for `width`, unless the component itself is private).

WARNING: Unable to create dependency on this.getBGColor for constraint 
…/@content/anonymous/@content/@rowparent/basegridrow[2].bgcolor='${...}'
WARNING: Unable to create dependency on this.getBGColor for constraint 
…/@content/anonymous/@content/@rowparent/basegridrow[1].bgcolor='${...}'
That looks like a real bug in the grid code.  It sure looks to me like 
`getBGColor` has a dependency on `regularColor` that needs to be reported.

I'm not sure I need to fix every one of these warnings in this change.  Since 
they are not regressions, we could incrementally address them.  (Or I could 
just turn the new warning off and we can continue in our ignorant bliss.)

Reply via email to