Change 20100325-maxcarlson-k by maxcarl...@bank on 2010-03-25 10:44:20 PDT
    in /Users/maxcarlson/openlaszlo/trunk-clean
    for http://svn.openlaszlo.org/openlaszlo/trunk

Summary: UPDATED: Update viewsystem size when compiled fonts load in DHTML, 
make text measurement callbacks asynchronous.

Bugs Fixed: LPP-8848 - DHTML: Textfields using embedded fonts aren't telling 
the viewsystem when their size changes

Technical Reviewer: ptw
QA Reviewer: hminsky

Details: Updated to address Tucker's comments:

Not approved yet:

Right now, LzText seems to think it can tell the sprite to change the font and 
then immediately update its size by querying the sprite.  Clearly that does not 
work in all cases.  With this change, the LFC is still going to try to update 
the size synchonously, and then the sprite will also install a callback to 
update the size asynchronously.  Do we really want this redundancy? It seems 
inefficient if not outright wrong.

Why don't we amend the LFC/Kernel API to say the LFC tells the sprite what to 
do and then the sprite will call back to the LFC if there is a size change?

This ended up being a fairly large change, but it wound up being much more 
efficient!

swf*/LzTextSprite - Call owner._updateSize() when initted is true and font size 
could have changed.   Add arg to getTextWidth() to advise if it's a user call.

swf*/LzSprite - Add initted, set to true when init() is called.

dhtml/LzFontManager - Move font loading code from LzSprite.  Add timeouts and 
improve efficiency.

dhtml/LzTextSprite - Allow LzSprite to track initted.  Move font loading code 
to LzFontManager.  Make __updatefieldsize() defer until after initted.  Add 
__fontLoaded() callback fro LzFontManager.  __updatefieldsize() tracks and 
clears any existing timout IDs.  Add stub setMaxLength() method.  Add arg to 
getTextWidth() to advise if it's a user call, to allow widths to be measured 
accurately before initted.  Avoid text measurement until initted.

dhtml/LzSprite - Consolidate __rootSprite __initdone flag to initted.  Add 
initted, set to true when init() is called.

dhtml/LzInputTextSprite - Completely comment out init() override, so 
LzSprite.init() runs.

LzText - Eliminate explicit _updateSize() calls, instead listen for size 
changes from the sprite, or at init() time.  Pass flag to sprite when 
getTextWidth() is being called from user code, to force measurement during init 
time.

Tests: See LPP-8848, test/lztest/lztest-textheight.lzx, smokecheck, 
examples/components/component_sampler.lzx run as before across platforms.  
Profiling DHTML apps in Firebug shows reduced calls to getTextDimension() and 
faster startup.

Files:
M       WEB-INF/lps/lfc/kernel/swf/LzTextSprite.as
M       WEB-INF/lps/lfc/kernel/swf/LzSprite.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/swf9/LzSprite.as
M       WEB-INF/lps/lfc/views/LzText.lzs

Changeset: 
http://svn.openlaszlo.org/openlaszlo/patches/20100325-maxcarlson-k.tar

Reply via email to