On Wed, 9 Sep 2026 23:24:34 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).

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

> 2854: 
> 2855:             if (cell.getParent() != null) {
> 2856:                 sheetChildren.remove(cell);

Since is an `ObservableList`, this could potentially run arbitrary code in a 
loop. What do you think of adding the children to a temporary list, and then 
`removeAll` that list?

modules/javafx.controls/src/test/java/test/javafx/scene/control/skin/VirtualFlowTest.java
 line 42:

> 40: import java.util.List;
> 41: import java.util.concurrent.atomic.AtomicInteger;
> 42: import java.util.concurrent.atomic.AtomicIntegerArray;

AtomicIntegerArray doesn't seem to be used.

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

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

Reply via email to