On Mon, 9 Mar 2026 19:38:15 GMT, Jose Pereda <[email protected]> wrote:
> 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. > > --------- > - [x] I confirm that I make this contribution in accordance with the [OpenJDK > Interim AI Policy](https://openjdk.org/legal/ai). This pull request has now been integrated. Changeset: e84b1457 Author: Jose Pereda <[email protected]> URL: https://git.openjdk.org/jfx/commit/e84b1457315ddad2254efc8129859c80d15881ed Stats: 209 lines in 4 files changed: 205 ins; 0 del; 4 mod 8372398: [macOS] Shown ContextMenu does not close when macOS system menu is clicked Reviewed-by: mfox, arapte ------------- PR: https://git.openjdk.org/jfx/pull/2102
