On Wed, 6 Dec 2023 19:23:38 GMT, Michael Strauß <mstra...@openjdk.org> wrote:
>> Please read [this >> document](https://gist.github.com/mstr2/9f46f92c98d3c86aa6a0b4224a9a6548) >> for an introduction to the Platform Preferences API, and how it interacts >> with the proposed style theme and stage appearance features. > > Michael Strauß has updated the pull request incrementally with one additional > commit since the last revision: > > consistently use NULL I am testing `PlatformPreferencesChangedTest` on Windows 11 22H2 22621.2715 (English setup). I run the app, with no contrast theme, and I see the default colours: preferences = { Windows.SPI.HighContrastOn=false Windows.SysColor.COLOR_3DFACE=0xf0f0f0ff ... Windows.UIColor.Foreground=0x000000ff } Note I get the preference `Windows.SPI.HighContrastOn`, which is not listed in the javadoc of `javafx.application.Platform.Preferences`, but I don't get these two preferences which are listed: Windows.SPI.HighContrast Windows.SPI.HighContrastColorScheme I take that `PlatformPreferences` doesn't list those if the high contrast mode is off. Then I go to Settings->Accessibility->Contrast themes, select Aquatic, and I see the change: changed = { Windows.SysColor.COLOR_3DFACE=0x202020ff ... Windows.UIColor.Foreground=0xffffffff } (still no SPI preferences). The app only changes the window frame (to yellow), and I see this exception: Exception in thread "JavaFX Application Thread" java.lang.IllegalArgumentException: No enum constant com.sun.javafx.application.PlatformImpl.HighContrastScheme.High Contrast Black at java.base/java.lang.Enum.valueOf(Enum.java:273) at javafx.graphics@22-internal/com.sun.javafx.application.PlatformImpl$HighContrastScheme.valueOf(PlatformImpl.java:738) at javafx.graphics@22-internal/com.sun.javafx.application.PlatformImpl._setAccessibilityTheme(PlatformImpl.java:826) at javafx.graphics@22-internal/com.sun.javafx.application.PlatformImpl.setAccessibilityTheme(PlatformImpl.java:786) at javafx.graphics@22-internal/com.sun.javafx.application.PlatformImpl.checkHighContrastThemeChanged(PlatformImpl.java:1097) at javafx.graphics@22-internal/com.sun.javafx.application.PlatformImpl.updatePreferences(PlatformImpl.java:1083) at javafx.graphics@22-internal/com.sun.javafx.tk.quantum.QuantumToolkit$2.handlePreferencesChanged(QuantumToolkit.java:375) at javafx.graphics@22-internal/com.sun.glass.ui.Application.notifyPreferencesChanged(Application.java:264) ``` With some debugging, I can see that the new Preferences map passed to `PlatformImpl::checkHighContrastThemeChanged` does have `Windows.SPI.HighContrastColorScheme -> High Contrast Black` and therefore `High Contrast Black` is passed now, instead of the existing key `high.contrast.black.theme` in `PlatformImpl::HighContrastScheme`, which causes the above exception. The same happens applying the `desert` contrast theme: error finding `PlatformImpl.HighContrastScheme.High Contrast White` instead of `high.contrast.white.theme`, the `dusk` contrast theme -> `PlatformImpl.HighContrastScheme.High Contrast #1` instead of `high.contrast.1.theme` and or the `night sky` contrast theme -> `PlatformImpl.HighContrastScheme.High Contrast #2` instead of `high.contrast.2.theme`. So I guess we'll need to review this `HighContrastScheme` enum. ------------- PR Comment: https://git.openjdk.org/jfx/pull/1014#issuecomment-1843583231