RFR: 8348744: Application window not always activated on macOS 15

Andy Goryachev angorya at openjdk.org
Tue Jan 28 17:29:53 UTC 2025


On Tue, 28 Jan 2025 17:23:50 GMT, Jose Pereda <jpereda at openjdk.org> wrote:

>> The fix for [JDK-8319066](https://bugs.openjdk.org/browse/JDK-8319066) added a needed call to activate a JavaFX window on macOS 14 or later via `[NSApp activate]`. In macOS 15, this doesn't always activate the window; even on macOS 14 there are certain cases where it might not. In all other places where we need to activate a window we call `[NSApp activateIgnoringOtherApps:YES]`. This is also what AWT uses in all places.
>> 
>> The fix is to replace the call to `activate` with a call to `activateIgnoringOtherApps`. I ran a full set of headful tests on macOS 15, 14, and 13 (although the code is not executed on  macOS 13), and everything looks good on my end.
>> 
>> Worth noting is that `NSApp::activateIgnoringOtherApps` is deprecated as of MacOS SDK 14, which means that we might have problems in the future when we update the Xcode toolchain (or if they eventually degrade it so that the `ignoringOtherApps` part of this call stops doing anything), but that will be a problem we need to address anyway, affecting other places in  JavaFX and AWT.
>> 
>> I intend to backported this fix to `jfx24` after it is integrated into mainline (for 25).
>
> modules/javafx.graphics/src/main/native-glass/mac/GlassApplication.m line 286:
> 
>> 284:         LOG("-> need to active application");
>> 285:         dispatch_async(dispatch_get_main_queue(), ^{
>> 286:             [NSApp activateIgnoringOtherApps:YES];
> 
> I see that the CanvasTest mentioned in the JBS issue passes now with this fix, and fails with `[NSApp activate];`
> 
> I'm not sure why `[NSApp activateIgnoringOtherApps:YES];` works but `[NSApp activate];` doesn't, given that the former is deprecated, as you already mentioned, and the latter is what Apple precisely [recommends](https://developer.apple.com/documentation/appkit/nsapplication/activate(ignoringotherapps:)?language=objc) to use instead.
> In any case, probably something for https://bugs.openjdk.org/browse/JDK-8348878.

@jperedadnr can you add this comment to https://bugs.openjdk.org/browse/JDK-8348878 please?

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

PR Review Comment: https://git.openjdk.org/jfx/pull/1685#discussion_r1932586525


More information about the openjfx-dev mailing list