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
