On macOS the menuBar with a custom menu item may disappear. For example, once 
switching from the menu with custom item to the system menu. 

The method `rebuildUI()` in `MenuBarSkin` class clears the menu first, then 
`menuContainsCustomMenuItem()` correctly blocks promotion to the macOS system 
menu and prints warning. However `rebuildUI()` returns at line 917: 
`isUseSystemMenuBar()` returns true but the menu cannot be installed into 
system menu due to `CustomMenuItem`. As a result the menu bar disappears.

Fix:
The `rebuildUI()` has to ensure that the menu does not contain `CustomMenuItem` 
when switching to the system menu.

On a side note, for the working scenario described in the bug the same 
_if-statement_ in `rebuildUI()` woks slightly different: the 
`currentMenuBarStage` is not _NULL_ but it no longer maps to this skin as a 
result the method does not return earlier and the menu gets rebuilt.

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

Commit messages:
 - 8351094: macOS: MenuBar with custom menu items disappears

Changes: https://git.openjdk.org/jfx/pull/2125/files
  Webrev: https://webrevs.openjdk.org/?repo=jfx&pr=2125&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8351094
  Stats: 5 lines in 1 file changed: 1 ins; 0 del; 4 mod
  Patch: https://git.openjdk.org/jfx/pull/2125.diff
  Fetch: git fetch https://git.openjdk.org/jfx.git pull/2125/head:pull/2125

PR: https://git.openjdk.org/jfx/pull/2125

Reply via email to