We bumped the release version of our JavaFX dependency to the latest ea, so it includes this feature now. I received an anonymous error report (so no details or log) about this error occuring on a Windows 11 system:

java.lang.UnsatisfiedLinkError:
    at com.sun.glass.ui.win.WinWindow._setDarkFrame(WinWindow.java)
    at com.sun.glass.ui.win.WinWindow.setDarkFrame(WinWindow.java:287)
    at com.sun.javafx.tk.quantum.WindowStage.setDarkFrame(WindowStage.java:919)
    at javafx.stage.Window$SceneModel.updateDarkFrame(Window.java:899)
    at com.sun.javafx.binding.ExpressionHelper$SingleChange.fireValueChangedEvent(ExpressionHelper.java:192)     at com.sun.javafx.binding.ExpressionHelper.fireValueChangedEvent(ExpressionHelper.java:91)     at javafx.beans.property.ObjectPropertyBase.fireValueChangedEvent(ObjectPropertyBase.java:106)     at com.sun.javafx.beans.property.NullCoalescingPropertyBase.fireValueChangedEvent(NullCoalescingPropertyBase.java:88)     at com.sun.javafx.beans.property.NullCoalescingPropertyBase.lambda$new$0(NullCoalescingPropertyBase.java:44)     at javafx.beans.value.WeakChangeListener.changed(WeakChangeListener.java:86)     at com.sun.javafx.binding.ExpressionHelper$Generic.fireValueChangedEvent(ExpressionHelper.java:386)     at com.sun.javafx.binding.ExpressionHelper.fireValueChangedEvent(ExpressionHelper.java:91)     at javafx.beans.property.ReadOnlyObjectPropertyBase.fireValueChangedEvent(ReadOnlyObjectPropertyBase.java:80)     at com.sun.javafx.application.preferences.PreferenceProperties$ColorSchemeProperty.fireValueChangeIfNecessary(PreferenceProperties.java:327)     at com.sun.javafx.application.preferences.PreferenceProperties.update(PreferenceProperties.java:187)     at com.sun.javafx.application.preferences.PlatformPreferences.update(PlatformPreferences.java:308)     at com.sun.javafx.application.PlatformImpl.updatePreferences(PlatformImpl.java:951)     at com.sun.javafx.tk.quantum.QuantumToolkit$2.handlePreferencesChanged(QuantumToolkit.java:374)     at com.sun.glass.ui.Application.notifyPreferencesChanged(Application.java:261)
    at com.sun.glass.ui.win.WinApplication._runLoop(WinApplication.java)
    at com.sun.glass.ui.win.WinApplication.lambda$runLoop$0(WinApplication.java:168)
    at java.lang.Thread.run(Thread.java:1474)

Maybe someone is using it a weird distribution of Windows 11 that you typically don't find with end users. I sadly don't have any system details. But in general it would be good if such an Error is caught and handled properly. Because right now it is not caught anywhere.

On 02/10/2025 10:43 PM, Marius Hanl wrote:
On Tue, 30 Sep 2025 20:08:55 GMT, Michael Strauß <[email protected]> wrote:

Currently, the color scheme of a system-decorated stage is as follows:
* On Windows, the title bar is always light (even if the OS color scheme is 
dark).
* On macOS and Linux, the title bar is light or dark depending on the OS color 
scheme.

The expected behavior is that the title bar matches the color scheme of the 
`Scene`.
If an application doesn't specify a color scheme, the title bar color should 
match the OS color scheme.

This PR fixes the behavior for Windows and macOS, but not for Linux (there's no 
good way to do that).
Depending on how you look at it, this is either a bug fix or an enhancement.
Michael Strauß has updated the pull request with a new target base due to a 
merge or a rebase. The pull request now contains four commits:

  - explicitly use wide string functions
  - Merge branch 'master' into feature/dark-window-frame
  - Merge branch 'master' into feature/dark-window-frame
# Conflicts:
    #   modules/javafx.graphics/src/main/native-glass/mac/GlassWindow.m
  - Window decorations adapt to color scheme
Had no time to further check this unfortunately, but did a lot of testing today 
and found no issues on Windows 11!
Tested also with an application where I implemented a dark/light mode switch 
with the new `@media` queries and `prefers-color-scheme`.

https://github.com/user-attachments/assets/48fc2b82-1cbe-4067-a7a2-b21ce3052e7c

As mentioned above, Godot has the same logic as we have in the Windows code, so 
the Windows part looked good to me.

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

PR Comment: https://git.openjdk.org/jfx/pull/1845#issuecomment-3362898888

Reply via email to