Hi Carlos,

I've been looking at the number of times the AdvancedDataGrid gets layed out in 
an example from Serkan.  That helped me propose this event change.

I see a few other things as well.  As I mentioned on some thread recently, the 
view and layout have to consider several scenarios:

1) sized to content
2) sized by parent

And for ADG:
3) no data provider
4) empty data provider
5) data provider set later (usually by server results)

And probably some more.  I'm still looking into it.  I don't have a proposal 
yet, but my first thought was that the View should be responsible for the 
intelligence that blocks layout passes until the last possible event.  I think 
layouts are much more re-usable so they shouldn't carry that logic.  The View 
can determine, for example, that the component has a percentage height/width 
and thus know that until there is a sizeChanged event, skip all other attempts 
to layout.  But as I mentioned elsewhere, that may mean that some of our 
layouts will need to visit each child.  This already happens in the MXRoyale 
set because the MXRoyale code is running old Flex layouts in absolute 
positioning because we want to override browser layouts, but isn't true in 
Basic.  Some layouts set display="flex" and the browser does the work and there 
is no loop to visit each child to send a sizeChanged event.

Let's get through this event change first, and hopefully I'll have time to 
further optimize ADG, and then I might have time to dig through the Jewel DG.  
But if you have time to do the analysis yourself, I think you want to try to 
understand the "why" for the various layout passes and see if you can build in 
some intelligence around which passes are important in various scenarios.

HTH,
-Alex

On 3/14/20, 3:40 AM, "Carlos Rovira" <[email protected]> wrote:

    Hi Alex,
    
    don't know of code that would break, but I think that would be the right
    thing to do. So better fix to comply with that change.
    
    What I'm more concern is about getting the pixel width or height when
    sizeChanged or layoutNeeded are thrown from layouts.
    As I stated before in other thread I had some issues, and yesterday Piotr
    reported another issue in DataGrid when width="100%" (or any other
    percentage). I could "hack" height using low level js
    requestAnimationFrame, but don't know how to fix percentage width problems.
    
    I don't find any way to make calculations in Royale to get the real pixel
    width value when a component has width set to some percentage value. The
    only way I'm seeing right now is to make some js low level hack with calc(%
    -px) in style.width. I think now that we have some infrastructure and
    examples with Cards, HGroups/VGroups, and more, is a good time to have some
    easy way to get to the layout() method (or other handler) and get directly
    width or height instead of 0 in the case we are using some % value.
    
    Now that I have to work on the fix for Piotr, what do you think about to
    take you a look and see that real case problem? Piotr committed yesterday
    that DataGrid example to TDJ. If you want we can work over it together and
    try what you think it could be a good option.
    
    Would be that possible?
    
    Thanks
    
    Carlos
    
    
    
    
    El sáb., 14 mar. 2020 a las 6:12, Alex Harui (<[email protected]>)
    escribió:
    
    > Hi,
    >
    > I am wanting to change the way UIBase setWidthAndHeight dispatches its
    > events to cut down on the number of layout passes.
    >
    > Right now, if you change both the width and height of a component, you get
    > 3 events (widthChanged, heightChanged, sizeChanged).  I want to change 
that
    > so that you only get sizeChanged.  This change would cause the "meaning" 
of
    > widthChanged to mean that only the width changed during a resize so you 
can
    > optimize some of the layout code and similar for heightChanged.   And 
thus,
    > you will only ever get one event out of setWidthAndHeight, it will either
    > be:
    >
    > - "widthChanged" meaning that only the width has changed
    > - "heightChanged" meaning that only the height has changed
    > - "sizeChanged" meaning that both width and height have changed
    >
    > Does anyone know of any code that would break if we made this change?
    > Everywhere I look, code listens to all 3 and does not react differently so
    > sometimes lays out 3 times, often once before the height has changed.
    >
    > Thoughts?
    > -Alex
    >
    >
    
    -- 
    Carlos Rovira
    
https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cfa7e4b2f9a89428f2a8008d7c8042840%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637197792495218994&amp;sdata=S05NKAMcGMjcdqZ5eQd81P7Sbb3NJB0TLkrysJS9b%2B8%3D&amp;reserved=0
    

Reply via email to