This PR fixes an issue on macOS with a system menu bar, that happens when a 
dialog is shown while a menu from the system menu bar is also showing.

Currently the menubar is removed whenever the stage loses focus, but that 
causes a broken state in the menu (as reported in 
https://bugs.openjdk.org/browse/JDK-8335541) as the dialog showing prevents for 
a clean tear down of the menubar. And even if there were no issues, there is 
actually no need of destroying and recreating the same menubar all over again, 
since nothing really changed (the dialog doesn't have a menubar on its own, and 
shares the very same one from its owner stage).

A test has been added, that fails before this patch and passes with it. 
Another minor test has been included, just to give some details about what 
happens when a menu titled exactly `"Help"` is added to the system menu bar. It 
works before and after the patch.

While adding the test, I noticed that there were failures when the menu was 
hidden:

SystemMenuBarHelpMenuTest STANDARD_ERROR
    Exception in thread "JavaFX Application Thread" 
java.lang.IllegalStateException: Not on FX application thread; currentThread = 
JavaFX Application Thread
        at 
javafx.graphics@27-internal/com.sun.javafx.tk.Toolkit.checkFxUserThread(Toolkit.java:282)
        at 
javafx.graphics@27-internal/com.sun.javafx.tk.quantum.QuantumToolkit.checkFxUserThread(QuantumToolkit.java:480)
        at 
javafx.controls@27-internal/javafx.scene.control.Menu.hide(Menu.java:428)
        at 
javafx.graphics@27-internal/com.sun.javafx.tk.quantum.GlassMenuEventHandler.handleMenuClosed(GlassMenuEventHandler.java:46)
        at 
javafx.graphics@27-internal/com.sun.glass.ui.Menu.notifyMenuClosed(Menu.java:196)

so I wrapped the calls in `Menu::notifyMenuClosed` and  
`Menu::notifyMenuClosed`  with ` Utils::runOnFxThread`.

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

Commit messages:
 - fix indentation
 - Don't remove menubar when focus goes from main stage to owned dialog, 
including tests

Changes: https://git.openjdk.org/jfx/pull/2107/files
  Webrev: https://webrevs.openjdk.org/?repo=jfx&pr=2107&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8335541
  Stats: 255 lines in 3 files changed: 249 ins; 0 del; 6 mod
  Patch: https://git.openjdk.org/jfx/pull/2107.diff
  Fetch: git fetch https://git.openjdk.org/jfx.git pull/2107/head:pull/2107

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

Reply via email to