> 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

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

Changes:
  - all: https://git.openjdk.org/jfx/pull/1635/files
  - new: https://git.openjdk.org/jfx/pull/1635/files/54f7445d..aa782c23

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jfx&pr=1635&range=01
 - incr: https://webrevs.openjdk.org/?repo=jfx&pr=1635&range=00-01

  Stats: 16 lines in 4 files changed: 0 ins; 0 del; 16 mod
  Patch: https://git.openjdk.org/jfx/pull/1635.diff
  Fetch: git fetch https://git.openjdk.org/jfx.git pull/1635/head:pull/1635

PR: https://git.openjdk.org/jfx/pull/1635

Reply via email to