On Wed, 8 Nov 2023 15:04:44 GMT, Kevin Rushforth <k...@openjdk.org> wrote:

> Fix [JDK-8319669](https://bugs.openjdk.org/browse/JDK-8319669) as follows:
> 
> 1. Override the `NSApplicationDelegate` method 
> `applicationSupportsSecureRestorableState` in `GlassApplication` and return 
> `YES`. This silences the warning that FX applications now get on macOS 14.
> 2. Create and initialize an `NSApplicationFX` subclass of `NSApplication` 
> with no additional functionality. This stops AWT from overwriting the 
> NSApplicationDelegate (`GlassApplication`) that JavaFX sets during toolkit 
> initialization in the case where the AWT toolkit is used from a JavaFX 
> Application (e.g., when using SwingNode or other Swing functionality), and is 
> necessary in order to safely do the above. It also fixes other problems that 
> can result from the delegate being overwritten.
> 
> As noted in the bug report, this PR solves the following problems:
> 
> * Eliminates the "Secure coding is not enabled for restorable state" warning 
> on macOS 14
> * The assertion error reported in 
> [JDK-8318129](https://bugs.openjdk.org/browse/JDK-8318129)
> 
> * The FX application stops getting messages when the application is hidden, 
> deactivated, reactivated, etc. We currently don't do anything with these 
> messages once the application is running, but we might do so in the future.
> 
> * Probably related to the above, we sometimes get an odd behavior when trying 
> to hide an application on macOS 13 using the CMD-H key after the AWT Toolkit 
> has been initialized. Instead of hiding the window, it pops up a finder 
> window with a folder icon and a label that shows the version of Java.
> 
> * If AWT and FX return a different answer from their delegate's 
> `applicationSupportsSecureRestorableState` method, it will crash on macOS 
> 13.x.
> 
> This is the FX equivalent of 
> [JDK-8318854](https://bugs.openjdk.org/browse/JDK-8318854) in AWT.

modules/javafx.graphics/src/main/native-glass/mac/GlassApplication.m line 543:

> 541:         // Determine if we're running embedded (in AWT, SWT, elsewhere)
> 542:         NSApplication *app = [NSApplicationFX sharedApplication];
> 543:         isEmbedded = isEmbedded = ![app isKindOfClass:[NSApplicationFX 
> class]];

why is there a double assignment here ?

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

PR Review Comment: https://git.openjdk.org/jfx/pull/1280#discussion_r1387065857

Reply via email to