> 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 from reviewer

-------------

Changes:
  - all: https://git.openjdk.org/jfx/pull/2103/files
  - new: https://git.openjdk.org/jfx/pull/2103/files/8a3b96a1..526bbe51

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jfx&pr=2103&range=01
 - incr: https://webrevs.openjdk.org/?repo=jfx&pr=2103&range=00-01

  Stats: 73 lines in 1 file changed: 33 ins; 35 del; 5 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

Reply via email to