On Tue, 2 Sep 2025 16:27:14 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 incrementally with one additional 
> commit since the last revision:
> 
>   Quick fix for a javadoc issue.

modules/javafx.controls/src/main/java/javafx/scene/control/MenuBar.java line 
186:

> 184:      *
> 185:      * @return the common system menus list property
> 186:      * @since 26

needs to be updated to 28 most likely

modules/javafx.controls/src/main/java/javafx/scene/control/MenuBar.java line 
217:

> 215:     private static SimpleObjectProperty<ObservableList<Menu>> 
> commonSystemMenus;
> 216:     public static final void setCommonSystemMenus(ObservableList<Menu> 
> value) {
> 217:         commonSystemMenusProperty().setValue(value);

what is the use case for this?

would it make more sense to change to `final commonSystemMenus` and disallow 
setting the list instance?  the application can just `setAll()`.

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

PR Review Comment: https://git.openjdk.org/jfx/pull/1881#discussion_r3508498936
PR Review Comment: https://git.openjdk.org/jfx/pull/1881#discussion_r3508511806

Reply via email to