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. This pull request has now been integrated. Changeset: bac8ee87 Author: Dean Wookey <dwoo...@openjdk.org> Committer: Ambarish Rapte <ara...@openjdk.org> URL: https://git.openjdk.org/jfx/commit/bac8ee878815a179ecebe212d324da32a4eb89fd Stats: 63 lines in 2 files changed: 48 ins; 9 del; 6 mod 8296409: Multiple copies of accelerator change listeners are added to MenuItems, but only 1 is removed Reviewed-by: angorya, arapte ------------- PR: https://git.openjdk.org/jfx/pull/937