[Laszlo-dev] For Review: Change 20081130-ptw-v Summary: Revert init arg behavior
P T Withington
ptw at pobox.com
Mon Dec 1 12:11:09 PST 2008
On 2008-12-01, at 14:41EST, André Bargull wrote:
> The behaviour doesn't really match 4.0, because the "iargs" are set
> to `null`, so if a user asks for "'foo' in args", it was `false` in
> 4.0, but now it's still `true` (if 'foo' is a constraint). What
> about "deleting" the values from "iargs"?
Good point. I was thinking that I should keep at least a null value
in iargs to indicate that the instance had _some_ binding of the
argument. I used null to be parallel to the case where there is an
initial argument for a slot with a setter: right now LzNode sets the
slot to null when the instance is created (rather than leaving it
undefined). This seemed to be necessary for some setters to work.
I'd like to get away from having to always ask `a in b` and use
`b['a'] != null` instead. The `a in b` has caused us trouble in cases
where b is not dynamic or a is not a public attribute. Do you think
it is really important to go all the way back an not list the argument
at all if there is a constraint on it?
> And the changed logic in "LzText#construct(..)" doesn't work, in the
> following testcase, the fontsize should be 26, but it is the default
> 11.
> Should be like so (I think.. at least if the constraint-slot is
> deleted instead of `null`):
> (see: http://svn.openlaszlo.org/openlaszlo/tags/4.0.14/WEB-INF/lps/lfc/views/LzText.lzs)
>> this.fontname = args.font = ('font' in args) ? args.font :
>> this.searchParents( "fontname" ).fontname;
>> this.fontsize = args.fontsize = ('fontsize' in args) ?
>> args.fontsize : this.searchParents( "fontsize" ).fontsize;
>> this.fontstyle = args.fontstyle = ('fontstyle' in args) ?
>> args.fontstyle : this.searchParents( "fontstyle" ).fontstyle;
>>
>> this.sprite.__initTextProperties(args);
>>
>> delete args.font;
>> delete args.fontsize;
>> delete args.fontstyle;
>>
Thanks for the test case. I'll have a look.
> test:
> ---
> <canvas debug="true" layout="axis:y;spacing:20" >
> <text text="Hello World!" fontsize="$once{26}" /><!-- not in 26pt -->
> <class name="myinput" extends="inputtext" >
> <method name="construct" args="p,a" >
> Debug.write("maxlength defined = %w", 'maxlength' in a);//was
> false in 4.0, now it's true
> super.construct(p,a);
> </method>
> </class>
> <myinput text="123456789" maxlength="$once{10}" width="80"
> bgcolor="#eaeaea" />
> </canvas>
> ---
>
> On 12/1/2008 5:55 PM, P T Withington wrote:
>> Change 20081130-ptw-v by ptw at dueling-banjos.home on 2008-11-30
>> 12:01:16 EST
>> in /Users/ptw/OpenLaszlo/trunk
>> for http://svn.openlaszlo.org/openlaszlo/trunk
>>
>> Summary: Revert init arg behavior
>>
>> Bugs Fixed:
>> Lpp-7378 LzTextSprite.setPattern warning in Laszlo 4.1.1, not in
>> 4.0.12
>> LPP-7386 Proposal to revert behavior of LzNode.construct to 4.1
>> behavior
>>
>> Technical Reviewer: a.bargull at intensis.de (pending)
>> QA Reviewer: max (pending)
>>
>> Details:
>> Added a new internal API LzNode/__LZhasConstraint, which can be
>> used in LzNode/construct to determine if an attribute will be
>> constrained by LzNode/__LZapplyArgs. This replaces testing for
>> LzInitExpr's in construct's arglist. LzNode/construct' initargs
>> are now as they were in 4.1 -- only constant initial values appear
>> in that list. Currently only LzText (and subclasses) use the
>> __LZhasConstraint API, because they (apparently) need to know of
>> their width/height will be constrained at construct time. No
>> other LFC classes or component classes use this facility, so I
>> have kept is as an LFC private API.
>>
>> LzTextSprite, LzInputTextSprite: These two sprite classes should
>> not be using the __LZhasConstraint API, but they are probably
>> going to be obsolete soon, so I just fixed them in the most
>> expedient way.
>>
>> LzNode: Remove LzInitExprs from init args when calling construct,
>> while preserving the ability of construct replacing/adding init
>> args.
>>
>> LzText: Use new __LZhasConstraint API.
>>
>> LzText, LzInputText, LaszloView: Simplify construct method, now
>> that args only contains constant values.
>>
>> LzReplicationManager: Clarifying comment
>>
>> hintedlayout: Fix construct arg defaulting bug noted in passing
>> (similar to LPP-7376)
>>
>> Tests:
>> smokecheck, ant test, test case from LPP-7386
>>
>> Files:
>> M WEB-INF/lps/lfc/kernel/swf/LzTextSprite.as
>> M WEB-INF/lps/lfc/kernel/swf/LzInputTextSprite.as
>> M WEB-INF/lps/lfc/kernel/swf9/LzTextSprite.as
>> M WEB-INF/lps/lfc/core/LzNode.lzs
>> M WEB-INF/lps/lfc/views/LzInputText.lzs
>> M WEB-INF/lps/lfc/views/LzText.lzs
>> M WEB-INF/lps/lfc/views/LaszloView.lzs
>> M WEB-INF/lps/lfc/data/LzReplicationManager.lzs
>> M demos/lzpixmobile/lib/hintedlayout.lzx
>>
>> Changeset: http://svn.openlaszlo.org/openlaszlo/patches/20081130-ptw-v.tar
>>
More information about the Laszlo-dev
mailing list