> The `VetoableListDecorator` class does not override the default 
> implementation of `List.sort()`. The default implementation copies the 
> elements into an array, sorts the array, and then calls `List.set()` in a 
> loop to sort the List **without removing the old elements first**. This leads 
> to the `VetoableListDecorator` intercepting the call to `set()` and seeing a 
> "duplicate child" being added.
> 
> The solution is to implement `SortableList.doSort()` with the following 
> protocol:
> 1. Make a copy of the list and sort it.
> 2. Present the sorted list with `onProposedChange` for a potential veto.
> 3. If successful, use `setAll()` to swap out the current list with the sorted 
> list.

Michael Strauß has updated the pull request incrementally with one additional 
commit since the last revision:

  factor out setAll implementation

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

Changes:
  - all: https://git.openjdk.org/jfx/pull/1674/files
  - new: https://git.openjdk.org/jfx/pull/1674/files/978d2dd2..d4ed2092

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

  Stats: 19 lines in 1 file changed: 6 ins; 8 del; 5 mod
  Patch: https://git.openjdk.org/jfx/pull/1674.diff
  Fetch: git fetch https://git.openjdk.org/jfx.git pull/1674/head:pull/1674

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

Reply via email to