On Wed, 14 May 2025 14:28:23 GMT, Ambarish Rapte <ara...@openjdk.org> wrote:

>> modules/javafx.controls/src/main/java/javafx/scene/control/skin/TreeCellSkin.java
>>  line 232:
>> 
>>> 230:                                 cell.layout();
>>> 231:                             }
>>> 232:                         }
>> 
>> This would perform a layout of all cells, re-layout of previous cells and 
>> layout of next cells.
>> but, layout of next cells is performed again as continuation layout of 
>> TreeView.
>> A solution would be to break the loop when `cell` is current cell being 
>> layouted, so that at least the layout of next cells is not performed twice.
>> 
>> Can there be a way to avoid re-layout of previous cells, too ? 🤔
>
> Also noticed a scenario: When a TreeCell with disclosureNode is currently not 
> shown on screen but becomes visible on scrolling. In that case the TreeCells 
> are layout while the scroll is in progress. I see only one way to avoid this 
> that maxDisclosureWidthMap should reflect the correct value before starting 
> the layout.

Yes true,
the default value of the `defaultDisclosureWidth` when there is no 
disclosureNode is 18 and when we come across a TreeCell that has a disclosure 
node the `defaultDisclosureWidth` changes to 20 that is what causes the 
TreeCells to move visually.
My first thought was to change the default value as that would avoid doing the 
re-layout and would reflect the the correct value before starting the layout 
also visually we won't see that change in the TreeCells position.

-------------

PR Review Comment: https://git.openjdk.org/jfx/pull/1715#discussion_r2089122257

Reply via email to