On Mon, 13 Apr 2020 10:36:51 GMT, Jeanette Winzenburg <[email protected]>
wrote:
> 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.
Code changes and test look OK to me.
I have a minor comment that I have listed separately.
modules/javafx.controls/src/main/java/javafx/scene/control/ChoiceBox.java line
185:
> 184:
> sm.selectedItemProperty().addListener(selectedItemListener);
> 185: // unfixed part of JDK-8090015 - why exclude null?
> 186: if (sm.getSelectedItem() != null && !
> valueProperty().isBound()) {
Add a TODO: or FIXME: if you intend to work on it. Also, it will be better to
create a JBS issue.
If not - please remove the comment.
-------------
PR: https://git.openjdk.java.net/jfx/pull/177