Skip to content
Snippets Groups Projects
  • Mike Antipov's avatar
    6110cb6a
    EXT-8285 FIXED prevented wrong handling in accordion of the "scrollToShowRect"... · 6110cb6a
    Mike Antipov authored
    EXT-8285 FIXED prevented wrong handling in accordion of the "scrollToShowRect" event from the child accordion tab's scroll container.
    
    This problem begins from expanding accordion_tab:
    
    1. adjustToFitScreen - calls adjustContainerPanel with "fit screen" rectangle (calls reshape() and resize()).
       Enter adjustContainerPanel("fit screen")
    2. reshape calls ensureSelectedVisible -> scrollToShowRect...
       scrollToShowRect notifyParent about "scrollToShowRect" (notifiParent is sync call)
       Enter LLAccordionCtrl::notifyParent("scrollToShowRect")
    4. AccordionCtrl handles "scrollToShowRect" notification and perform adjustContainerPanel with "another" rectangle.
       Perform adjustContainerPanel("another") // At least I have not seen 3rd recursive call of adjustContainerPanel
    5. Exit LLAccordionCtrl::notifyParent("scrollToShowRect")
    6. Exit reshape("fit screen").
    7. setRect("fit screen").
    8. Exit adjustContainerPanel("fit screen").
    ...
    As result we get AccordionTab that reshaped to "another" rectangle and resized to "fit screen" rectangle.
    
    + Fixed by handling "scrollToShowRect" message in LLAccordionCtrlTab from "LLScrollContainer".
    
    + Removed the workaround comment.
    
    Reviewed by Neal Orman at https://codereview.productengine.com/secondlife/r/727/
    
    --HG--
    branch : product-engine
    6110cb6a
    History
    EXT-8285 FIXED prevented wrong handling in accordion of the "scrollToShowRect"...
    Mike Antipov authored
    EXT-8285 FIXED prevented wrong handling in accordion of the "scrollToShowRect" event from the child accordion tab's scroll container.
    
    This problem begins from expanding accordion_tab:
    
    1. adjustToFitScreen - calls adjustContainerPanel with "fit screen" rectangle (calls reshape() and resize()).
       Enter adjustContainerPanel("fit screen")
    2. reshape calls ensureSelectedVisible -> scrollToShowRect...
       scrollToShowRect notifyParent about "scrollToShowRect" (notifiParent is sync call)
       Enter LLAccordionCtrl::notifyParent("scrollToShowRect")
    4. AccordionCtrl handles "scrollToShowRect" notification and perform adjustContainerPanel with "another" rectangle.
       Perform adjustContainerPanel("another") // At least I have not seen 3rd recursive call of adjustContainerPanel
    5. Exit LLAccordionCtrl::notifyParent("scrollToShowRect")
    6. Exit reshape("fit screen").
    7. setRect("fit screen").
    8. Exit adjustContainerPanel("fit screen").
    ...
    As result we get AccordionTab that reshaped to "another" rectangle and resized to "fit screen" rectangle.
    
    + Fixed by handling "scrollToShowRect" message in LLAccordionCtrlTab from "LLScrollContainer".
    
    + Removed the workaround comment.
    
    Reviewed by Neal Orman at https://codereview.productengine.com/secondlife/r/727/
    
    --HG--
    branch : product-engine
Code owners
Assign users and groups as approvers for specific file changes. Learn more.