> When menu buttons are added and removed from the scene, an accelerator change > listener is added to each menu item in the menu. There is nothing stopping > the same change listener being added multiple times. > > MenuButtonSkinBase calls the > ControlAcceleratorSupport.addAcceleratorsIntoScene(getSkinnable().getItems(), > getSkinnable()); method each time the button is added to the scene, but that > method itself also registers a listener to call itself. Each time the button > is added to the scene, the method is called at least twice. > > When it's removed from the scene, the remove accelerator method is also > called twice, but only the first call removes a change listener attached to > the accelerator because the first call removes the entry from the hashmap > changeListenerMap. The second call finds nothing in the map, and doesn't > remove the additional instance. > > This pull request just removes the redundant code in the MenuButtonSkinBase.
Dean Wookey has updated the pull request incrementally with one additional commit since the last revision: Added changing scene tests for accelerator change listeners ------------- Changes: - all: https://git.openjdk.org/jfx/pull/937/files - new: https://git.openjdk.org/jfx/pull/937/files/0dae693a..52a98813 Webrevs: - full: https://webrevs.openjdk.org/?repo=jfx&pr=937&range=01 - incr: https://webrevs.openjdk.org/?repo=jfx&pr=937&range=00-01 Stats: 29 lines in 1 file changed: 29 ins; 0 del; 0 mod Patch: https://git.openjdk.org/jfx/pull/937.diff Fetch: git fetch https://git.openjdk.org/jfx pull/937/head:pull/937 PR: https://git.openjdk.org/jfx/pull/937