On Wed, 11 Mar 2026 00:46:22 GMT, Jose Pereda <[email protected]> wrote:
> 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. This pull request has now been integrated. Changeset: b928e308 Author: Jose Pereda <[email protected]> URL: https://git.openjdk.org/jfx/commit/b928e3081a8143004349f2e6f15d2ff47c876d6c Stats: 185 lines in 2 files changed: 182 ins; 1 del; 2 mod 8263959: Unexpected disable behaviour on macOS MenuBar Reviewed-by: angorya, arapte ------------- PR: https://git.openjdk.org/jfx/pull/2103
