RFR: 8359599: Calling refresh() for all virtualized controls recreates all cells instead of refreshing the cells [v3]
Kevin Rushforth
kcr at openjdk.org
Sat Oct 11 12:29:44 UTC 2025
On Fri, 10 Oct 2025 19:53:26 GMT, Andy Goryachev <angorya at openjdk.org> wrote:
>> Marius Hanl has updated the pull request incrementally with two additional commits since the last revision:
>>
>> - remove newline from imports
>> - assert row creation count as well
>
> modules/javafx.controls/src/main/java/javafx/scene/control/TableView.java line 1767:
>
>> 1765: /**
>> 1766: * Calling {@code refresh()} forces the TableView control to repopulate the
>> 1767: * cells necessary to populate the visual bounds of the control.
>
> the word 'repopulate' is used twice (here and elsewhere)
>
> I would suggest to rephrase these comments to indicate what happens exactly, possibly borrowing text from the `VirtualFlow`:
>
> - recreate: a layout pass should be done, and that the cell factory has changed. All cells in the viewport are recreated with the new cell factory.
> - rebuild: a layout pass should be done, and cell contents have changed. All cells are removed and then added properly in the viewport
At a minimum, replace the first occurrence of "repopulate" with "rebuild".
* Calling {@code refresh()} forces the TableView control to rebuild the
* cells necessary to populate the visual bounds of the control.
I wouldn't over-specify this by saying what `VirtualFlow` will do, but if you want to add a sentence saying that this will request a layout that would be fine:
* Calling {@code refresh()} forces the TableView control to rebuild the
* cells necessary to populate the visual bounds of the control.
* This will request a layout of the TableView cells.
-------------
PR Review Comment: https://git.openjdk.org/jfx/pull/1830#discussion_r2422774420
More information about the openjfx-dev
mailing list