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