[Laszlo-dev] [UPDATED] For Review: Change 20090213-ptw-X Summary: DHTML scrolling tweaks

Max Carlson max at laszlosystems.com
Wed Feb 25 07:00:44 PST 2009


Nice sleuthing on the textsize cache - caching can be so dangerous... 
lps/components/incubator/test/scrolledittext-test.lzx?lzt=testboth and 
the rest of the tests look a lot better!  Agreed on the quirks - we need 
to revisit them and remove the ones that are always on or are otherwise 
unused.

test/lztest/lztest-textheight.lzx?lzt=testboth&debug=true shows a number 
of regressions in DHTML.  There were measurement errors before, but now 
there are a number of visual bugs as well...

Once that's fixed, approved!

P T Withington wrote:
> I believe I have addressed your comments.
> 
> I've implemented a new philosophy of how text sprites work.  I've given 
> the div element of the sprite (and the clickcontainer) a different 
> class, depending on the type of text (plain, input, input-multiline).  
> This class handles the padding chore of positioning and clipping the 
> text component correctly to match swf metrics.  The text components 
> themselves handle the text layout and scrolling.  They are set to always 
> have scrollbars, which are pushed outside the clipping region of the 
> containing div so they are not visible, but this allows us to measure 
> text more easily.
> 
> I found a nasty bug in the getTextSize cache:  it was caching different 
> numbers for the same key depending on whether the sprite it was being 
> asked to measure was multiline or not (because it was conditionally 
> adding in the swf padding).  This meant that whoever got their first got 
> cached, and the other polarity got the wrong answer!  I moved the quirk 
> from getTextSize to its clients.
> 
> Eventually, we should rip out the quirk flag for swf metrics, since it 
> is always on.  Having it conditional just makes the code hard to read.
> 
> I've run all the tests you suggested, and they seem vastly improved.
> 
> ---
> 
> Change 20090213-ptw-X by ptw at dueling-banjos.home on 2009-02-13 21:32:09 EST
>     in /Users/ptw/OpenLaszlo/trunk-4
>     for http://svn.openlaszlo.org/openlaszlo/trunk
> 
> Summary: DHTML scrolling tweaks
> 
> Bugs Fixed: LPP-6580 scrolledittext doesn't work in 4.1 (partial0
> 
> Technical Reviewer: max (pending)
> QA Reviewer: hminsky (pending)
> 
> Details:
> 
>     LzSprite, LzTextSprite, LzInputTextSprite: note constructor for
>     debugger, assign correct className's to divs
> 
>     LzSprite: better debugger printing of sprite, adjust
>     default CSS to always create scrollbars for text elements (that
>     will be clipped away), add a new quirk for scrollbar_width, create
>     new container styles that are used to pad the text element to
>     match where it would be positioned in swf, adjust lineHeight and
>     letterSpacing of text elements to match swf
> 
>     LzTextSprite: Use lztextcontainer for div.  Changed getTextSize to
>     _not_ include quirks, because it does not include the quirks in
>     the cache key, so bad matches were being found in the cache.
>     Instead, it's clients apply quirks as necessary. Fixed
>     getTextWidth, getTextHeight, getTextfieldHeight, to obey kernel
>     API contract.
> 
>     LzTextSprite, LzInputTextSprite: correctly call super
>     methods for setWidth, setHeight; arrange to hide scrollbars under
>     clip
> 
>     LzInputTextSprite: Use lzinputtextcontainer for div.  Update div
>     and clipcontainer styles for multiline.  Remove redundant
>     getTextHeight and getTextfieldHeight methods.  Fix setMultiline to
>     correctly copy styles to new div
> 
>     LzDebug: note div style in debug name
> 
>     LzText, LzTextSprite: Use view height to adjust legacy attributes
> 
>     build-opt: Missing dependency noticed in passing
> 
>     scrolledittext: Correct math error
> 
>     scrolledittext-test: Spiff up diagnostic info
> 
> Tests:
>     test/lfc/legals/keyboardandmouse.lzx?lzr=dhtml&debug=true
>     (scrolling left and right)
>     demos/lzpix/app.lzx?lzt=html&lzr=dhtml
>     examples/components/edittext_example.lzx?lzt=testboth
>     lps/components/incubator/test/scrolledittext-test.lzx?lzt=testboth
> 
> Files:
> M      WEB-INF/lps/lfc/kernel/swf/LzTextSprite.as
> 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/debugger/platform/dhtml/LzDebug.js
> M      WEB-INF/lps/lfc/views/LzText.lzs
> M      build-tools/build-opt.xml
> M      lps/components/incubator/scrolledittext.lzx
> M      lps/components/incubator/test/scrolledittext-test.lzx
> 
> Changeset: http://svn.openlaszlo.org/openlaszlo/patches/20090213-ptw-X.tar

-- 
Regards,
Max Carlson
OpenLaszlo.org


More information about the Laszlo-dev mailing list