I wonder how this effects performance. I’d need to look at exactly the flow (which I don’t have time for now), but one thing to keep in mind is that if reads and writes are not carefully plan, it could cause forced layouts which is a performance killer.
Not sure if this effects what you did or not, but definitely something to keep in mind. HTH, Harbs > On Jun 4, 2020, at 5:49 PM, Carlos Rovira <carlosrov...@apache.org> wrote: > > Hi, > > as part of the Jewel Tile Layout improvement, I want to let you know about > an important addition. > > until now I had very hard time dealing with width/height of a component in > layout classes when the width or height are a percentage > or not set. > > Since that depends on other containers, I found while working on Jewel > DataGrid that I need to make "requestAnimationFrame" calls > until I get the proper measurements. > > So I set up a "waitForSize" public property that is available in all Jewel > layouts, since all comes from StyledLayoutBase. > This is false by default, so you need to put to true to use this feature. I > didn't other way to get this measures, I think maybe this could have > some performance hit, for that reason, I let users choose. If you know > something better, let me know :) > > If you check that code you'll find that performanceLayout is now using > "checkHostSize()" (if waitForSize is true).The code is this: > > /** > * We call requestAnimationFrame until we get width and height > */ > COMPILE::JS > protected function checkHostSize():void { > if(sizeInitialized) return; > if((host.width == 0 && !isNaN(host.percentWidth)) || > (host.height == 0 && !isNaN(host.percentHeight))) > { > requestAnimationFrame(checkHostSize); > } else > { > sizeInitialized = true; > executeLayout(); > } > } > > when we get the size, we continue as usual. > As I said before if you left "waitForSize" to false (default), it will work > as always. > > For example, new tile horizontal layout is using it in TDJ: > > <j:Group className="wrapper" width="100%"> > <j:beads> > <j:TileHorizontalLayout localId="tl" waitForSize="true"/> > </j:beads> > > Any comment are welcome > > Thanks > > -- > Carlos Rovira > http://about.me/carlosrovira