On Thu, 15 May 2025 17:50:50 GMT, Michael Strauß <mstra...@openjdk.org> wrote:

> Some platform preference changes can trigger the emission of multiple 
> notifications. For example, when switching from a high-contrast theme on 
> Windows to the regular theme, the following notifications are emitted (log 
> can be viewed in `PlatformPreferencesChangedTest`):
> 
> 
> changed:
>       Windows.UIColor.Accent=0x0078d4ff
>       Windows.SysColor.COLOR_HIGHLIGHTTEXT=0xffffffff
>       Windows.SysColor.COLOR_WINDOW=0xffffffff
>       Windows.UIColor.AccentLight1=0x0091f8ff
>       Windows.SysColor.COLOR_3DFACE=0xf0f0f0ff
>       Windows.SysColor.COLOR_HOTLIGHT=0x0066ccff
>       Windows.SysColor.COLOR_WINDOWTEXT=0x000000ff
>       Windows.SysColor.COLOR_BTNTEXT=0x000000ff
>       Windows.UIColor.Foreground=0x000000ff
>       Windows.UIColor.AccentDark1=0x0067c0ff
>       Windows.UIColor.Background=0xffffffff
>       Windows.UIColor.AccentLight3=0x99ebffff
>       Windows.UIColor.AccentLight2=0x4cc2ffff
>       Windows.SysColor.COLOR_GRAYTEXT=0x6d6d6dff
>       Windows.SysColor.COLOR_HIGHLIGHT=0x0078d7ff
>       Windows.UIColor.AccentDark2=0x003e92ff
>       Windows.UIColor.AccentDark3=0x001a68ff
> 
> changed:
>       -Windows.SPI.HighContrastColorScheme
>       Windows.SPI.HighContrast=false
> 
> changed:
>       Windows.UIColor.Foreground=0xffffffff
>       Windows.UIColor.Background=0x000000ff
> 
> 
> Notably, the values for Windows.UIColor.Foreground/Background are 
> inconsistent between the notifications (although they are eventually 
> correct). In general, only a single notification should be emitted that 
> includes all of the changed preferences.
> 
> This artifact is only visible on Windows. The reason is that changing some 
> system settings (like high-contrast theme) causes a number of different 
> window messages to be sent to the application. We should wait for all window 
> messages to come in, and then aggregate all of the changed preferences into a 
> single notification.
> 
> In order to minimize the delay between changing a system setting and sending 
> out the notification in JavaFX, the implementation only waits when instructed 
> to do so by the native toolkit. This allows us to instantly send out 
> notifications for most changes, but selectively wait a bit for changes where 
> the native toolkit knows that more changes might be coming in.

This pull request has been closed without being integrated.

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

PR: https://git.openjdk.org/jfx/pull/1810

Reply via email to