This PR adds a fix to close the popup windows on macOS when clicking over the system menu bar.
According to the macOS standard behaviour for native applications, when a popup window is showing, and the user clicks on the system menu bar, the click event is consumed and the popup is closed. A second click is then required to open the system menu bar. This is done by the popup windows directly, as they are NSMenu objects that enable a modal event tracking loop, capturing all events including those from the system menu bar, in order to dismiss the popup when the click is outside the window. However, JavaFX just implements regular NSWindows, and there is no such event loop. Therefore, this PR adds a notification to the system menu instead. When the menu is about to open, the popup window gets a notification, which is processed to cancel the menu animation, preventing it from showing up, and also closing the popup. And then, with the popup closed, a new click from the user will open the system menus as usual. This applies to all JavaFX menus from the system menu bar, that is: the application menu (the "java" menu when the application is not packaged yet) and other menus created by the application, if any. It doesn't apply to the Apple system menu, which is not handle by JavaFX, though. This causes a difference with native applications, that treat such menu in the same way. ------------- Commit messages: - Close popup windows on macOS when clicking over the system menu bar Changes: https://git.openjdk.org/jfx/pull/2102/files Webrev: https://webrevs.openjdk.org/?repo=jfx&pr=2102&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8372398 Stats: 44 lines in 4 files changed: 39 ins; 0 del; 5 mod Patch: https://git.openjdk.org/jfx/pull/2102.diff Fetch: git fetch https://git.openjdk.org/jfx.git pull/2102/head:pull/2102 PR: https://git.openjdk.org/jfx/pull/2102
