> 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

Reply via email to