On Mon, 15 Sep 2025 16:20:10 GMT, Pabulaner IV <[email protected]> wrote:
> This pull request fixes the system menu bar on MacOS when combining windows > of Swing and JavaFX. > > # Behavior before > > If for some reason You needed to initialize AWT before JavaFX and You wanted > to install the system menu bar from the JavaFX side, this wasn't possible. > This issue is persistent even when You didn't open a Swing window. > > One scenario where this kind of issue happens is when You use install4j (see > https://www.ej-technologies.com/install4j). In this case AWT is initialized > by install4j and therefore You can't use the JavaFX system menu bar anymore. > > > # Behavior after > > The fix allows JavaFX to install a system menu bar even if it is initialized > after AWT. This is achieved by only changing code inside JavaFX. Each JavaFX > window stores the previously installed menu bar when gaining focus and will > restore this menu bar if the focus was lost. This only happens if the system > menu bar installed by the JavaFX window is still unchanged. > > > # Tests > > This PR introduces tests for the system menu bar in addition to verifying its > own behavior / changes. The tests include single- and multi-window tests > while interacting with Swing. The tests ensure that the menu bar stays the > same for each window, no matter how You switch focus between them. > > > # Additional benifits > > This fix is not specifically for AWT, but allows JavaFX to interact much more > compatibly with other frameworks that make use of the system menu bar. > > > # Review from AWT > > In the previous PR related to this one, the comment was made that the folks > from AWT should take a look at this fix. It would be great and much > appreciated if someone could initiate it. > > > # Add disable flag? > > We could also add a flag to prevent JavaFX from installing a system menu bar > for users who have found other fixes for their projects / setups. This could > be used to restore the previous behavior when AWT is initialized first. > > > Co-Author: @FlorianKirmaier So I added most of the tests You proposed, except for the last three. For the last two I just need some more time to implement them. For the other test with AWT being initialized last and still installing the menu is something not directly implemented in this fix. I think AWT won't install a system menu if it is running embedded and therefore this would need its own fix inside AWT itself (but I don't know exactly). ------------- PR Comment: https://git.openjdk.org/jfx/pull/1904#issuecomment-3324399135
