> 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