> 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.
Jose Pereda has updated the pull request incrementally with one additional commit since the last revision: Address feedback ------------- Changes: - all: https://git.openjdk.org/jfx/pull/2103/files - new: https://git.openjdk.org/jfx/pull/2103/files/526bbe51..a448e06b Webrevs: - full: https://webrevs.openjdk.org/?repo=jfx&pr=2103&range=02 - incr: https://webrevs.openjdk.org/?repo=jfx&pr=2103&range=01-02 Stats: 23 lines in 1 file changed: 4 ins; 7 del; 12 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
