This PR fixes https://bugs.openjdk.org/browse/JDK-8263959, an issue on macOS that happens when a menu is disabled, and then enabled back again, where leaf menuItems remain disabled unexpectedly, by re-syncing the native NSMenuItem enabled state from Java menuItem enabled state.
Explanation: We create the native NSMenuItems with `autoenablesItems:YES`, which means the OS calls `GlassMenu::validateMenuItem:` on each item's target to determine if it should be enabled. This calls the Java `GlassSystemMenu::validate` callback, which updates the accelerator bindings, but it doesn't update the enabled state: It remains as it was (in this case, disabled when the parent menu was disabled) as `[glassTargetItem->item isEnabled]` returns the old state (NO/disabled) rather than the updated Java state (`!menuitem.isDisable()`/enabled). One possible and valid fix would be changing `autoenablesItems:YES` to `autoenablesItems:NO`, as the Java layer already manages the enable state via `GlassMenu::_setEnabled` (making `validateMenuItem:` redundant for this case). However, the proposed fix doesn't change that, and simply syncs the native side with the Java side while validation is being performed. A system test has been included, if fails before this patch, passes after it. ------------- Commit messages: - re-sync native NSMenuItem enabled state from Java menuItem enabled state, include test Changes: https://git.openjdk.org/jfx/pull/2103/files Webrev: https://webrevs.openjdk.org/?repo=jfx&pr=2103&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8263959 Stats: 190 lines in 2 files changed: 187 ins; 1 del; 2 mod Patch: https://git.openjdk.org/jfx/pull/2103.diff Fetch: git fetch https://git.openjdk.org/jfx.git pull/2103/head:pull/2103 PR: https://git.openjdk.org/jfx/pull/2103
