On Wed, 1 Jul 2026 19:44:43 GMT, Martin Fox <[email protected]> wrote:

>> This PR provides an API for replacing the application menu that JavaFX 
>> places in the system menu bar on macOS. The application menu is the one next 
>> to the Apple menu that is titled with the application's name and contains 
>> the Quit menu item. The JavaFX version of this menu has many limitations so 
>> this PR allows a developer to simply replace it outright.
>> 
>> Technically there’s no reason to restrict this to only one menu so the API 
>> allows the developer to specify an observable list of Menus known as the 
>> common system menus. Like the current application menu the common menus are 
>> present for all JavaFX windows and remain present even if all windows lose 
>> focus. Any per-window menus provided by a MenuBar with useSystemMenuBar set 
>> will appear alongside the common system menus.
>> 
>> In addition the PR provides some calls that allow a developer to implement 
>> the Hide <app name>, Hide Others, and Show All menu items that are expected 
>> in the application menu.
>> 
>> ---------
>> - [x] I confirm that I make this contribution in accordance with the 
>> [OpenJDK Interim AI Policy](https://openjdk.org/legal/ai).
>
> Martin Fox has updated the pull request with a new target base due to a merge 
> or a rebase. The incremental webrev excludes the unrelated changes brought in 
> by the merge/rebase. The pull request contains eight additional commits since 
> the last revision:
> 
>  - Merge remote-tracking branch 'upstream/master' into commonmenus
>  - Tweaked testing utility that searches NSApp.mainMenu, added tests
>  - Merge remote-tracking branch 'upstream/master' into commonmenus
>  - New way of testing system menu bar, updated tests
>  - Merge remote-tracking branch 'upstream/master' into commonmenus
>  - Quick fix for a javadoc issue.
>  - Merge remote-tracking branch 'upstream/master' into commonmenus
>  - Specify a list of menus that are always present in the system menu bar

Before delving into the code there should be some discussion on scope. This is 
the Big Comprehensive Fix. It allows a developer to do much more than 
manipulate or replace the application menu. They can also implement Mac-like 
behavior by installing a single application-wide system MenuBar that's used 
across all windows and that persists even when all windows are minimized.

We could implement something much smaller in scope. This PR proves that the 
application menu can be implemented as a standard JavaFX Menu control 
(currently it's built using lower-level parts that are private). We could just 
provide an API that allows a developer to retrieve the application menu as a 
standard JavaFX Menu control. Then they could customize the items inside it at 
will just like any other Menu. That would limit the API to just tweaking the 
application menu but also greatly reduce the scope of testing.

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

PR Comment: https://git.openjdk.org/jfx/pull/1881#issuecomment-4859658114

Reply via email to