One more question:

This change appears to revert the change Henry made for LPP-8813.  Does the 
test case for LPP-8813 still pass?

On 2010-04-14, at 18:38, Max Carlson wrote:

> Change 20100410-hqm-e by [email protected] on 2010-04-10 19:31:18 EDT
>    in /Users/hqm/openlaszlo/trunk
>    for http://svn.openlaszlo.org/openlaszlo/trunk
> 
> Summary: UPDATED ^2 BY MAX: make autosizing inputtext recompute it's height 
> properly when user types
> 
> New Features:
> 
> Bugs Fixed: LPP-8591 Something mysterious about scrollHeight property in 
> DHTML, LPP-7832 - Kernel API getTextHeight should be renamed getLineHeight to 
> avoid confusion
> 
> Technical Reviewer: hminsky
> QA Reviewer: ptw
> Doc Reviewer: (pending)
> 
> Documentation:
> 
> Release Notes:
> 
> Overview: Updated to address Tucker's comments:
> 
> 1)  In CSS, you don't need to specify units for `0`:  `0px` is superfluous 
> (In LzSprite.js).  So is `"0px"`, and `0+"px"`!  (In LzIputTextSprite.js)
> 
> I updated all 0px values to 0 and changed LzKernelUtils.CSSDimension() to 
> return 0 as-is.
> 
> 2)  I think a better idiom for (m == true) is (!!m).  My 2p.
> 
> Changed.
> 
> 3)  I guess you are saying that it is more efficient to store the tagname as 
> a sprite property than to ask for it back from the DOM?  Perhaps a comment to 
> that effect so future generations do not wonder?
> 
> I added a comment.
> 
> Issues:
> 
> 1)  Why do we need this {setWidth,setHeight}/skipupdate flag?  Is there ever 
> a time that the generic LFC calls setHeight that it would need a callback 
> from the kernel to actually install the height?  It would seem better to me 
> to fix up the sprite implementation to not use the LFC->kernel API internally 
> when it is trying to send an update the other way (which is what the old 
> `force` flag was for).
> 
> Yeah, you're right.  I managed to eliminate or rationalize all internal sprit 
> e.setWidth/Height() calls, since _updateSize() was updating that with 
> definitive values anyway. 
> 
> I made sure LzText.getTextfieldHeight/TextWidth() notified the kernel to 
> bypass text initialization options.
> 
> 2)  I don't understand the change in LzTextSprite/__fontloaded from setting 
> the height to the height of the contents to setting it to just 1-line high.  
> Why?
> 
> Good catch! That is what it was doing before because getTextHeight() -> 
> getLineHeight().
> 
> 3)  I realize this is not part of your change, but I am concerned about the 
> TODO on line 529 ff of LzTextSprite.  It seems we _have_ implemented using 
> the correct tag for the measurement node, but we _have_not_ made that tag 
> part of the cache key (the cache key is hardwired to 'div').  Isn't that 
> going to screw up measurement if we happen to have a <text> and <inputtext> 
> with the same content?  Shouldn't the `'div'` on line 533 be 
> `this.scrolldivtagname` instead?
> 
> Yes, this has been fixed.  Perhaps we'd get better measurements if we used 
> actual <input or <textarea objects?
> 
> 4) The comment at LaszloView#2440 is garbled.  Same at LaszloView#2473
> 
> Fixed.
> 
> Otherwise, the same:
> 
> I tweaked this change a bit in order to make it more efficient.  I also 
> renamed some args.  Now test/lztest/lztest-textheight.lzx lists all expected 
> warnings, and things look more visually consistent across dhtml, swf8 and 
> swf10.  And of course, variable-height inputtexts resize when you type in 
> them.  And, I found and fixed a text measurement bug in IE where the first 
> time a string was measured, it could be inaccurate.
> 
> + make autosizing inputtext recompute it's height properly when user types
> 
> Details:
> 
> WEB-INF/lps/lfc/kernel/dhtml/LzTextSprite.js: 0px -> 0, store 
> scrolldivtagname for faster lookups, remove unneeded calls to 
> setWidth/Height() since __updatefieldsize covers them, optimize style 
> measurement key lookups, move text measurement to LzFontManager, fix 
> setWidth() to account for text-indent per Andre's comments, skip unneeded 
> updates to scroll div in setHeight(), 
> 
> LzFontManager - Move text measurement from LzTextSprite
> 
> WEB-INF/lps/lfc/kernel/swf/LzTextSprite.as: Rename getTextHeight -> 
> getLineHeight.  Add new 'force' arg to getTextfieldHeight (unused in this 
> implementation, but for compatibiltiy
> with DHTML)
> 
> WEB-INF/lps/lfc/kernel/swf9/LzTextSprite.as: Rename getTextHeight -> 
> getLineHeight.  Add new 'force' arg to getTextfieldHeight (unused in this 
> implementation, but for compatibiltiy with DHTML)
> 
> WEB-INF/lps/lfc/kernel/dhtml/LzSprite.js: Added quirk for setting height to 
> zero in order to get proper scroll height in IE and Safari (see __textEvent() 
> in dhtml/LzInputTextSprite.js), 0px -> 0, default lzswfinputtextmultiline CSS 
> to whiteSpace: 'pre-wrap', use LzFontManager.__createContainerDiv() to create 
> font measurement container.  
> 
> WEB-INF/lps/lfc/kernel/dhtml/LzInputTextSprite.js:When a multiline field is 
> supposed to be autosize it's height, update the position for IE and Safari 
> quirk, when user types into the field.  Track scrolldivtagname, rely on 
> view.inputtextevent to call __updatefieldsize(), 0px -> 0. 
> 
> LzKernelUtils: Return 0 immediately in CSSDimension()
> 
> WEB-INF/lps/lfc/views/LzInputText.lzs: When 'onchange' event is received from 
> kernel, multiline field should update it's height to the measured text 
> height, using 'updateHeight' instead of setHeight (so it doesn't turn it into 
> a fixed height field)
> 
> WEB-INF/lps/lfc/views/LzText.lzs: Autosizing text fields should call 
> updateHeight, not setHeight, when updating their height, so they don't turn 
> into fixed height fields.  Call sprite APIs directly for text size 
> information, and pass flag for getTextHeight() so sprites know when the call 
> is from user code.  
> 
> WEB-INF/lps/lfc/views/LaszloView.lzs: updateHeight and updateWidth methods 
> update the memo cache vars
> 
> WEB-INF/lps/server/src/org/openlaszlo/sc/CommonGenerator.java: fix for an 
> unrelated bug that was picked up by findBugs analysis
> 
> WEB-INF/lps/server/src/org/openlaszlo/compiler/NodeModel.java: need to tell 
> the JDOM XML parser to preserve newlines in text.
> 
> 
> test/lztest/lztest-textheight.lzx: Updated warnings to reflect current state 
> in different runtimes
> 
> Tests: See LPP-8591
> 
> Look at text and image sizing in:
> demos/lzpix/app.lzx swf,swf10,dhtml
> calendar demo
> amazon demo
> test/lztest/lztest-textheight.lzx
> 
> test/smoke/smokecheck
> 
> Files:
> M       test/lztest/lztest-textheight.lzx
> M       WEB-INF/lps/lfc/kernel/swf/LzTextSprite.as
> M       WEB-INF/lps/lfc/kernel/dhtml/LzFontManager.js
> M       WEB-INF/lps/lfc/kernel/dhtml/LzSprite.js
> M       WEB-INF/lps/lfc/kernel/dhtml/LzTextSprite.js
> M       WEB-INF/lps/lfc/kernel/dhtml/LzInputTextSprite.js
> M       WEB-INF/lps/lfc/kernel/swf9/LzTextSprite.as
> M       WEB-INF/lps/lfc/kernel/LzKernelUtils.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/server/src/org/openlaszlo/sc/CommonGenerator.java
> M       WEB-INF/lps/server/src/org/openlaszlo/compiler/NodeModel.java
> 
> Changeset: http://svn.openlaszlo.org/openlaszlo/patches/20100410-hqm-e.tar
> 


Reply via email to