Macroscopic issue is that initially, the toggle is not sync'ed to the selection 
state. Root reason is an missing else
block when updating toggle selection state (see report for details).

Fixed by introducing the else block and removing all follow-up errors that 
tried to amend the consequences of the
incorrect selection state

- removed listener to selected item
- removed toggle selection update in showing listener

The former also fixed the memory leak when replacing the selectionModel plus an 
unreported NPE when the selectionModel
is null initially.

Added tests that failed before the fix and passed after. As there had been no 
tests around toggle state, so added some
to verify that the change doesn't break. Enhanced shim/skin to allow access to 
popup for testing. Removed the
informally ignored test part for memory leak.

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

Commit messages:
 - 8242489: ChoiceBox: initially toggle not sync'ed to selection

Changes: https://git.openjdk.java.net/jfx/pull/177/files
 Webrev: https://webrevs.openjdk.java.net/jfx/177/webrev.00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8242489
  Stats: 375 lines in 5 files changed: 347 ins; 25 del; 3 mod
  Patch: https://git.openjdk.java.net/jfx/pull/177.diff
  Fetch: git fetch https://git.openjdk.java.net/jfx pull/177/head:pull/177

PR: https://git.openjdk.java.net/jfx/pull/177

Reply via email to