On Wed, 19 Apr 2023 16:33:37 GMT, Marius Hanl <mh...@openjdk.org> wrote:
>> Calculate position of first visible element before propagating changes. >> Make sure to restore the position of said element after the changes are done. >> >> Fix JDK-8306447 > > modules/javafx.controls/src/main/java/javafx/scene/control/skin/VirtualFlow.java > line 858: > >> 856: >> 857: @Override protected void invalidated() { >> 858: int oldIndex = computeCurrentIndex(); > > I wonder if we can cache the old index somewhere since the _compute..._ > methods can take some time on big tables. I think an instance variable makes sense, as the current index is a property of a specific VirtualFlow instance. That won't help with performance though, as we still need to compute the current index in a number of cases. Instead of calling the `computeCurrentIndex()` we would then just update the instance variable. To fix the issue, we need to reduce the cases where the current index is recomputed (or bring it to zero in case the current index can't theoretically change) , and this is what #1098 is about -- so your comment probably belongs to #1098? I'll experiment with instance fields, and try to reduce the computations even more. ------------- PR Review Comment: https://git.openjdk.org/jfx/pull/1099#discussion_r1172177638