On Fri, 11 Sep 2026 15:14:08 GMT, Marius Hanl <[email protected]> wrote:

>> Something I found out while experimenting in 
>> https://github.com/openjdk/jfx/pull/2051.
>> It was on my list to do since then.
>> 
>> The `VirtualFlow` can end up creating 1-2 unnecessary cells, which then are 
>> never used. They just sit in the pile.
>> This happens because we may end up calling `addLeadingCells` although our 
>> first cell is already on position `0`, so at the top - there is no cell 
>> above us.
>> 
>> In this scenario, we do not need to call `addLeadingCells`.
>> 
>> Also added the optimization I found in the PR mentioned above.
>> When we have 10 visible cells, size 25px and scroll 10px, we will have 11 
>> cells visible. 
>> If we scroll to the top again, we will have 10 cells visible again -- and in 
>> this case we will remove it from the `sheet`. 
>> But the pile could contain even more piled cells (e.g. when the application 
>> size got smaller, we have less cells to render, all remaining cells went 
>> into the pile). 
>> So the removal is a bit faster with that method, instead of always calling 
>> `removeAll`. Same functionality.
>> 
>> ---------
>> - [x] I confirm that I make this contribution in accordance with the 
>> [OpenJDK Interim AI Policy](https://openjdk.org/legal/ai).
>
> Marius Hanl has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   bulk remove

modules/javafx.controls/src/main/java/javafx/scene/control/skin/VirtualFlow.java
 line 2855:

> 2853:             wasFocusOwner = wasFocusOwner || doesCellContainFocus(cell);
> 2854:             cell.setVisible(false);
> 2855: 

there might be a problem:
- cell.setVisible(false) invokes a listener that let's say, scrolls and removes 
the cell from pile, then reuses that cell for a different index synchronously.
- the said cell is active, but later code removes it in L2861

the old code removed the pile after all the callbacks were done in L2855

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

PR Review Comment: https://git.openjdk.org/jfx/pull/2308#discussion_r4008695749

Reply via email to