On Wed, 13 Nov 2024 20:02:01 GMT, Marius Hanl <mh...@openjdk.org> wrote:

>> This PR fixes a bug where the `TableCell` indices can be outdated (not 
>> synchronized) with the `TableRow` index.
>> 
>> What normally happens is:
>> - Index is changed: Cell update is requested when the row is empty 
>> (otherwise noop)
>> - Item is changed: Cell update is requested, which will now update the 
>> indices of the underlying `TableCells`
>> 
>> Under some circumstances, when a `TableRow` is reused (e.g. index 60 -> 1) 
>> the item can be the same 
>> -> `oldIndex != newIndex && oldItem == newItem`
>> This can happen when the items of a `TableView` are changed, but some items 
>> are the same in both item lists (Think about a filter, where we filter down 
>> 60 to 2 items).
>> 
>> -> In this scenario, the cell update is not triggered, so the underlying 
>> `TableCell` indices will not be updated ever (e.g. they still have index 60 
>> set, but the row has 1 now). 
>> 
>> The fix is to always update the underlying `TableCell` indices when the 
>> `TableRow` index changed. 
>> While usually the item is different when the index changed, this is not 
>> always the case (there is no guarantee that the item changed, as we can see 
>> in the example, where the cell is reused).
>> 
>> ---
>> 
>> Also made sure that the issues linked in the code and ticket do not regress:
>> - https://bugs.openjdk.org/browse/JDK-8095357
>> - https://bugs.openjdk.org/browse/JDK-8115269
>
> Marius Hanl has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   8344067: Format streams

Marked as reviewed by angorya (Reviewer).

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

PR Review: https://git.openjdk.org/jfx/pull/1635#pullrequestreview-2434323446

Reply via email to