[jfx15] RFR: 8248490: [macOS] Undecorated stage does not minimize
Kevin Rushforth
kcr at openjdk.java.net
Fri Jul 10 21:33:07 UTC 2020
When running a JavaFX application on macOS using a JDK compiled with the MacOSX 10.13 SDK or later, an undecorated or
transparent stage cannot be programmatically minimized (iconified). The reason for this failure is that JavaFX only
sets the `NSMiniaturizableWindowMask` bit in the `styleMask` of the `NSWindow` for decorated windows. Previous versions
of the MacOSX SDK would minimize and restore a windows regardless of the setting of this flag. When the application is
compiled against a newer SDK, Apple honors that flag and prevents the window from being minimized.
Note that it is the version of the SDK used to compile the JDK and not the version that is used to compile JavaFX that
exposes this bug.
The fix is to temporarily set the `NSMiniaturizableWindowMask` prior to calling `miniaturize` or `deminiaturize`, and
restore it afterwards. This seems safer than setting the bit unconditionally when the NSWindow is created, which would
have been another approach.
A similar fix was done for AWT. See [JDK-8214046](https://bugs.openjdk.java.net/browse/JDK-8214046).
I propose to fix this in JavaFX 15, so it it targeted to the `jfx15` branch.
-------------
Commit messages:
- 8248490: [macOS] Undecorated stage does not minimize
Changes: https://git.openjdk.java.net/jfx/pull/264/files
Webrev: https://webrevs.openjdk.java.net/jfx/264/webrev.00
Issue: https://bugs.openjdk.java.net/browse/JDK-8248490
Stats: 135 lines in 2 files changed: 134 ins; 0 del; 1 mod
Patch: https://git.openjdk.java.net/jfx/pull/264.diff
Fetch: git fetch https://git.openjdk.java.net/jfx pull/264/head:pull/264
PR: https://git.openjdk.java.net/jfx/pull/264
More information about the openjfx-dev
mailing list