On Fri, 4 Nov 2022 16:07:54 GMT, Dean Wookey <dwoo...@openjdk.org> wrote:
> 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. I wonder if changes in [JDK-8295426](https://bugs.openjdk.org/browse/JDK-8295426): MenuButtonSkin: memory leak when changing skin would impact this PR or vice versa. ------------- PR: https://git.openjdk.org/jfx/pull/937