On Thu, 21 Dec 2023 01:19:40 GMT, Rajat Mahajan <rmaha...@openjdk.org> wrote:
> **Issue:** > https://bugs.openjdk.org/browse/JDK-8294427 starts to use this API > https://learn.microsoft.com/en-us/windows/win32/api/uxtheme/nf-uxtheme-openthemedatafordpi > > which was introduced only in Windows 10 1703. > So the theming engine won't load on anything earlier like the original > windows 10 or windows 8.1 etc. > > So as an undocumented side-effect it completely breaks the theming of Windows > L&F on anything earlier > and it falls back to hard-coded rendering like Windows NT/Windows 2000 > > Whilst those older versions are technically out of at least "mainstream" > support, this is not the way > to make that breaking change and I see this fix has been backported to older > releases which expect stability > > it seems to me that this code should NOT fail if the new API is missing and > instead fall back to the old code. > No one will care about a pixel being off on hi-dpi if the entire UI is wrong. > > **Fix:** > Added fallback path to support older versions of Windows that do not support > OpenThemeDataForDpi(). > > **Testing:** > Tested on my Windows 10 machine with and without the fallback path and it > works as expected. > Alexey tested on Windows 7 and on Windows 10 v1607 — it works correctly (jdk > 21.0.2 can't render themes as reported). > He also tested on Windows 11 . Looks good to me. I tested it on Windows 7, Windows 10 v1607 as well as current versions of Windows 10 and 11. I ran SwingSet2 side-by-side and I didn't spot any differences. ------------- Marked as reviewed by aivanov (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/17173#pullrequestreview-1793493900