Used in some .NET apps for theming purposes.
-- v9: uxtheme: Add ShouldSystemUseDarkMode.
From: Helix Graziani helix.graziani@hotmail.com
--- dlls/uxtheme/system.c | 17 +++++++++++++++++ dlls/uxtheme/tests/system.c | 37 +++++++++++++++++++++++++++++++++++++ dlls/uxtheme/uxtheme.spec | 1 + 3 files changed, 55 insertions(+)
diff --git a/dlls/uxtheme/system.c b/dlls/uxtheme/system.c index 25f495d29f3..1b9513f8821 100644 --- a/dlls/uxtheme/system.c +++ b/dlls/uxtheme/system.c @@ -1256,3 +1256,20 @@ BOOL WINAPI ThemeHooksRemove(void) UnregisterUserApiHook(); return TRUE; } + +/********************************************************************** + * ShouldSystemUseDarkMode (UXTHEME.138) + * + * RETURNS + * Whether or not the system should use dark mode. + */ +BOOL WINAPI ShouldSystemUseDarkMode(void) +{ + DWORD light_theme = TRUE, light_theme_size = sizeof(light_theme); + + RegGetValueW(HKEY_CURRENT_USER, + L"Software\Microsoft\Windows\CurrentVersion\Themes\Personalize", + L"AppsUseLightTheme", RRF_RT_REG_DWORD, NULL, &light_theme, &light_theme_size); + + return !light_theme; +} diff --git a/dlls/uxtheme/tests/system.c b/dlls/uxtheme/tests/system.c index 2e769625dab..42b729cad70 100644 --- a/dlls/uxtheme/tests/system.c +++ b/dlls/uxtheme/tests/system.c @@ -48,6 +48,7 @@ static HDC (WINAPI *pGetBufferedPaintTargetDC)(HPAINTBUFFER); static HRESULT (WINAPI *pGetBufferedPaintTargetRect)(HPAINTBUFFER, RECT *); static HRESULT (WINAPI *pGetThemeIntList)(HTHEME, int, int, int, INTLIST *); static HRESULT (WINAPI *pGetThemeTransitionDuration)(HTHEME, int, int, int, int, DWORD *); +static BOOL (WINAPI *pShouldSystemUseDarkMode)(void);
static LONG (WINAPI *pDisplayConfigGetDeviceInfo)(DISPLAYCONFIG_DEVICE_INFO_HEADER *); static LONG (WINAPI *pDisplayConfigSetDeviceInfo)(DISPLAYCONFIG_DEVICE_INFO_HEADER *); @@ -2597,6 +2598,41 @@ static void test_theme(void) DestroyWindow(hwnd); }
+static void test_ShouldSystemUseDarkMode(void) +{ + DWORD light_theme, light_theme_size = sizeof(light_theme), last_error; + BOOL function_result; + LSTATUS ls; + + pShouldSystemUseDarkMode = (void *)GetProcAddress(GetModuleHandleA("uxtheme.dll"), + MAKEINTRESOURCEA(138)); + if (!pShouldSystemUseDarkMode) + { + win_skip("ShouldSystemUseDarkMode() is unavailable.\n"); + return; + } + + ls = RegGetValueW(HKEY_CURRENT_USER, + L"Software\Microsoft\Windows\CurrentVersion\Themes\Personalize", + L"AppsUseLightTheme", RRF_RT_REG_DWORD, NULL, &light_theme, &light_theme_size); + if (ls == ERROR_FILE_NOT_FOUND) + { + light_theme = 1; + ls = 0; + } + ok(ls == 0, "RegGetValue failed: %ld.\n", ls); + + /* Call ShouldSystemUseDarkMode() and check for errors */ + SetLastError(0xdeadbeef); + function_result = pShouldSystemUseDarkMode(); + last_error = GetLastError(); + ok(last_error == 0xdeadbeef, "ShouldSystemUseDarkMode set last error: %ld.\n", last_error); + + ok(function_result == !light_theme, "Expected value %d, got %d.\n", + !light_theme, function_result); + +} + START_TEST(system) { ULONG_PTR ctx_cookie; @@ -2622,6 +2658,7 @@ START_TEST(system) test_DrawThemeBackgroundEx(); test_GetThemeBackgroundRegion(); test_theme(); + test_ShouldSystemUseDarkMode();
if (load_v6_module(&ctx_cookie, &ctx)) { diff --git a/dlls/uxtheme/uxtheme.spec b/dlls/uxtheme/uxtheme.spec index c60254b677d..a5bfb88c49a 100644 --- a/dlls/uxtheme/uxtheme.spec +++ b/dlls/uxtheme/uxtheme.spec @@ -42,6 +42,7 @@ 61 stdcall OpenThemeDataEx(ptr wstr long) 62 stub -noname ServerClearStockObjects 63 stub -noname MarkSelection +138 stdcall -noname ShouldSystemUseDarkMode()
# Standard functions @ stdcall BeginBufferedAnimation(ptr ptr ptr long ptr ptr ptr ptr)
Hi,
It looks like your patch introduced the new failures shown below. Please investigate and fix them before resubmitting your patch. If they are not new, fixing them anyway would help a lot. Otherwise please ask for the known failures list to be updated.
The tests also ran into some preexisting test failures. If you know how to fix them that would be helpful. See the TestBot job for the details:
The full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=138160
Your paranoid android.
=== w7u_2qxl (32 bit report) ===
uxtheme: system.c:2629: Test failed: ShouldSystemUseDarkMode set last error: 5. system.c:1945: Test failed: Expected brush changed. system.c:1952: Test failed: Expected a different brush. system.c:1970: Test failed: Expected a different brush. system.c:1981: Test failed: Expected a different brush. system.c:2005: Test failed: OpenThemeData failed. system.c:2009: Test failed: GetThemePartSize failed, hr 0x80070006. system.c:2032: Test failed: msg 0x132: Expected (-1,-2), got (0,0). system.c:2040: Test failed: msg 0x132: Expected mode 0x1, got 0x2. system.c:2055: Test failed: msg 0x132: Expected brush color 0, got 0xf0f0f0. system.c:2056: Test failed: msg 0x132: Expected brush style 0x3, got 0. system.c:2061: Test failed: msg 0x132: GetObjectA failed, error 2147943568. system.c:2067: Test failed: msg 0x132: Expected a different brush. system.c:2075: Test failed: msg 0x132: Expected a different brush. system.c:2032: Test failed: msg 0x135: Expected (-1,-2), got (0,0). system.c:2040: Test failed: msg 0x135: Expected mode 0x1, got 0x2. system.c:2055: Test failed: msg 0x135: Expected brush color 0, got 0xf0f0f0. system.c:2056: Test failed: msg 0x135: Expected brush style 0x3, got 0. system.c:2061: Test failed: msg 0x135: GetObjectA failed, error 2147943568. system.c:2067: Test failed: msg 0x135: Expected a different brush. system.c:2075: Test failed: msg 0x135: Expected a different brush. system.c:2032: Test failed: msg 0x136: Expected (-1,-2), got (0,0). system.c:2040: Test failed: msg 0x136: Expected mode 0x1, got 0x2. system.c:2055: Test failed: msg 0x136: Expected brush color 0, got 0xf0f0f0. system.c:2056: Test failed: msg 0x136: Expected brush style 0x3, got 0. system.c:2061: Test failed: msg 0x136: GetObjectA failed, error 2147943568. system.c:2067: Test failed: msg 0x136: Expected a different brush. system.c:2075: Test failed: msg 0x136: Expected a different brush. system.c:2088: Test failed: msg 0x136: Expected a different brush. system.c:2090: Test failed: msg 0x136: Expected a different brush. system.c:2032: Test failed: msg 0x138: Expected (-1,-2), got (0,0). system.c:2040: Test failed: msg 0x138: Expected mode 0x1, got 0x2. system.c:2055: Test failed: msg 0x138: Expected brush color 0, got 0xf0f0f0. system.c:2056: Test failed: msg 0x138: Expected brush style 0x3, got 0. system.c:2061: Test failed: msg 0x138: GetObjectA failed, error 2147943568. system.c:2067: Test failed: msg 0x138: Expected a different brush. system.c:2075: Test failed: msg 0x138: Expected a different brush. system.c:2163: Test failed: Expected a different brush. system.c:2244: Test failed: 0x1 to 0x6: Expected tab texture enabled. system.c:2244: Test failed: 0x1 to 0xa: Expected tab texture enabled. system.c:2244: Test failed: 0x2 to 0x4: Expected tab texture enabled. system.c:2244: Test failed: 0x2 to 0x8: Expected tab texture enabled. system.c:2244: Test failed: 0x2 to 0x6: Expected tab texture enabled. system.c:2244: Test failed: 0x2 to 0xa: Expected tab texture enabled. system.c:2244: Test failed: 0x4 to 0x2: Expected tab texture enabled. system.c:2244: Test failed: 0x4 to 0x6: Expected tab texture enabled. system.c:2244: Test failed: 0x8 to 0x2: Expected tab texture enabled. system.c:2244: Test failed: 0x8 to 0xa: Expected tab texture enabled. system.c:2218: Test failed: 0x6 to 0x1: Expected tab texture enabled. system.c:2218: Test failed: 0x6 to 0x2: Expected tab texture enabled. system.c:2244: Test failed: 0x6 to 0x2: Expected tab texture enabled. system.c:2218: Test failed: 0x6 to 0x4: Expected tab texture enabled. system.c:2244: Test failed: 0x6 to 0x4: Expected tab texture enabled. system.c:2218: Test failed: 0x6 to 0x8: Expected tab texture enabled. system.c:2218: Test failed: 0x6 to 0x6: Expected tab texture enabled. system.c:2244: Test failed: 0x6 to 0x6: Expected tab texture enabled. system.c:2218: Test failed: 0x6 to 0xa: Expected tab texture enabled. system.c:2218: Test failed: 0x6 to 0: Expected tab texture enabled. system.c:2244: Test failed: 0x6 to 0: Expected tab texture enabled. system.c:2218: Test failed: 0x6 to 0x3: Expected tab texture enabled. system.c:2218: Test failed: 0x6 to 0xe: Expected tab texture enabled. system.c:2218: Test failed: 0xa to 0x1: Expected tab texture enabled. system.c:2218: Test failed: 0xa to 0x2: Expected tab texture enabled. system.c:2244: Test failed: 0xa to 0x2: Expected tab texture enabled. system.c:2218: Test failed: 0xa to 0x4: Expected tab texture enabled. system.c:2218: Test failed: 0xa to 0x8: Expected tab texture enabled. system.c:2244: Test failed: 0xa to 0x8: Expected tab texture enabled. system.c:2218: Test failed: 0xa to 0x6: Expected tab texture enabled. system.c:2218: Test failed: 0xa to 0xa: Expected tab texture enabled. system.c:2244: Test failed: 0xa to 0xa: Expected tab texture enabled. system.c:2218: Test failed: 0xa to 0: Expected tab texture enabled. system.c:2244: Test failed: 0xa to 0: Expected tab texture enabled. system.c:2218: Test failed: 0xa to 0x3: Expected tab texture enabled. system.c:2218: Test failed: 0xa to 0xe: Expected tab texture enabled. system.c:2244: Test failed: 0 to 0x6: Expected tab texture enabled. system.c:2244: Test failed: 0 to 0xa: Expected tab texture enabled. system.c:2244: Test failed: 0x3 to 0x6: Expected tab texture enabled. system.c:2244: Test failed: 0x3 to 0xa: Expected tab texture enabled. system.c:2302: Test failed: "Button" 0: Expected tab texture enabled. system.c:2325: Test failed: "Button" 0: Expected tab texture enabled. system.c:2302: Test failed: "Button" 0x1: Expected tab texture enabled. system.c:2325: Test failed: "Button" 0x1: Expected tab texture enabled. system.c:2302: Test failed: "Button" 0x2: Expected tab texture enabled. system.c:2325: Test failed: "Button" 0x2: Expected tab texture enabled. system.c:2302: Test failed: "Button" 0x3: Expected tab texture enabled. system.c:2325: Test failed: "Button" 0x3: Expected tab texture enabled. system.c:2302: Test failed: "Button" 0x4: Expected tab texture enabled. system.c:2325: Test failed: "Button" 0x4: Expected tab texture enabled. system.c:2302: Test failed: "Button" 0x5: Expected tab texture enabled. system.c:2325: Test failed: "Button" 0x5: Expected tab texture enabled. system.c:2302: Test failed: "Button" 0x6: Expected tab texture enabled. system.c:2325: Test failed: "Button" 0x6: Expected tab texture enabled. system.c:2302: Test failed: "Button" 0x7: Expected tab texture enabled. system.c:2325: Test failed: "Button" 0x7: Expected tab texture enabled. system.c:2302: Test failed: "Button" 0x8: Expected tab texture enabled. system.c:2325: Test failed: "Button" 0x8: Expected tab texture enabled. system.c:2302: Test failed: "Button" 0x9: Expected tab texture enabled. system.c:2325: Test failed: "Button" 0x9: Expected tab texture enabled. system.c:2302: Test failed: "Button" 0xa: Expected tab texture enabled. system.c:2325: Test failed: "Button" 0xa: Expected tab texture enabled. system.c:2302: Test failed: "Button" 0xb: Expected tab texture enabled. system.c:2325: Test failed: "Button" 0xb: Expected tab texture enabled. system.c:2302: Test failed: "Button" 0xc: Expected tab texture enabled. system.c:2325: Test failed: "Button" 0xc: Expected tab texture enabled. system.c:2302: Test failed: "Button" 0xd: Expected tab texture enabled. system.c:2325: Test failed: "Button" 0xd: Expected tab texture enabled. system.c:2302: Test failed: "Button" 0xe: Expected tab texture enabled. system.c:2325: Test failed: "Button" 0xe: Expected tab texture enabled. system.c:2302: Test failed: "Button" 0xf: Expected tab texture enabled. system.c:2325: Test failed: "Button" 0xf: Expected tab texture enabled. system.c:2302: Test failed: "Static" 0: Expected tab texture enabled. system.c:2325: Test failed: "Static" 0: Expected tab texture enabled. system.c:2302: Test failed: "Static" 0x3: Expected tab texture enabled. system.c:2325: Test failed: "Static" 0x3: Expected tab texture enabled. system.c:2302: Test failed: "Static" 0x4: Expected tab texture enabled. system.c:2325: Test failed: "Static" 0x4: Expected tab texture enabled. system.c:2302: Test failed: "Static" 0xd: Expected tab texture enabled. system.c:2325: Test failed: "Static" 0xd: Expected tab texture enabled. system.c:2302: Test failed: "Static" 0xe: Expected tab texture enabled. system.c:2325: Test failed: "Static" 0xe: Expected tab texture enabled. system.c:2302: Test failed: "Static" 0xf: Expected tab texture enabled. system.c:2325: Test failed: "Static" 0xf: Expected tab texture enabled. system.c:2302: Test failed: "Static" 0x10: Expected tab texture enabled. system.c:2325: Test failed: "Static" 0x10: Expected tab texture enabled.
=== w7u_adm (32 bit report) ===
uxtheme: system.c:2629: Test failed: ShouldSystemUseDarkMode set last error: -2147023728. system.c:1945: Test failed: Expected brush changed. system.c:1952: Test failed: Expected a different brush. system.c:1970: Test failed: Expected a different brush. system.c:1981: Test failed: Expected a different brush. system.c:2005: Test failed: OpenThemeData failed. system.c:2009: Test failed: GetThemePartSize failed, hr 0x80070006. system.c:2032: Test failed: msg 0x132: Expected (-1,-2), got (0,0). system.c:2040: Test failed: msg 0x132: Expected mode 0x1, got 0x2. system.c:2055: Test failed: msg 0x132: Expected brush color 0, got 0xf0f0f0. system.c:2056: Test failed: msg 0x132: Expected brush style 0x3, got 0. system.c:2061: Test failed: msg 0x132: GetObjectA failed, error 2147943568. system.c:2067: Test failed: msg 0x132: Expected a different brush. system.c:2075: Test failed: msg 0x132: Expected a different brush. system.c:2032: Test failed: msg 0x135: Expected (-1,-2), got (0,0). system.c:2040: Test failed: msg 0x135: Expected mode 0x1, got 0x2. system.c:2055: Test failed: msg 0x135: Expected brush color 0, got 0xf0f0f0. system.c:2056: Test failed: msg 0x135: Expected brush style 0x3, got 0. system.c:2061: Test failed: msg 0x135: GetObjectA failed, error 2147943568. system.c:2067: Test failed: msg 0x135: Expected a different brush. system.c:2075: Test failed: msg 0x135: Expected a different brush. system.c:2032: Test failed: msg 0x136: Expected (-1,-2), got (0,0). system.c:2040: Test failed: msg 0x136: Expected mode 0x1, got 0x2. system.c:2055: Test failed: msg 0x136: Expected brush color 0, got 0xf0f0f0. system.c:2056: Test failed: msg 0x136: Expected brush style 0x3, got 0. system.c:2061: Test failed: msg 0x136: GetObjectA failed, error 2147943568. system.c:2067: Test failed: msg 0x136: Expected a different brush. system.c:2075: Test failed: msg 0x136: Expected a different brush. system.c:2088: Test failed: msg 0x136: Expected a different brush. system.c:2090: Test failed: msg 0x136: Expected a different brush. system.c:2032: Test failed: msg 0x138: Expected (-1,-2), got (0,0). system.c:2040: Test failed: msg 0x138: Expected mode 0x1, got 0x2. system.c:2055: Test failed: msg 0x138: Expected brush color 0, got 0xf0f0f0. system.c:2056: Test failed: msg 0x138: Expected brush style 0x3, got 0. system.c:2061: Test failed: msg 0x138: GetObjectA failed, error 2147943568. system.c:2067: Test failed: msg 0x138: Expected a different brush. system.c:2075: Test failed: msg 0x138: Expected a different brush. system.c:2163: Test failed: Expected a different brush. system.c:2244: Test failed: 0x1 to 0x6: Expected tab texture enabled. system.c:2244: Test failed: 0x1 to 0xa: Expected tab texture enabled. system.c:2244: Test failed: 0x2 to 0x4: Expected tab texture enabled. system.c:2244: Test failed: 0x2 to 0x8: Expected tab texture enabled. system.c:2244: Test failed: 0x2 to 0x6: Expected tab texture enabled. system.c:2244: Test failed: 0x2 to 0xa: Expected tab texture enabled. system.c:2244: Test failed: 0x4 to 0x2: Expected tab texture enabled. system.c:2244: Test failed: 0x4 to 0x6: Expected tab texture enabled. system.c:2244: Test failed: 0x8 to 0x2: Expected tab texture enabled. system.c:2244: Test failed: 0x8 to 0xa: Expected tab texture enabled. system.c:2218: Test failed: 0x6 to 0x1: Expected tab texture enabled. system.c:2218: Test failed: 0x6 to 0x2: Expected tab texture enabled. system.c:2244: Test failed: 0x6 to 0x2: Expected tab texture enabled. system.c:2218: Test failed: 0x6 to 0x4: Expected tab texture enabled. system.c:2244: Test failed: 0x6 to 0x4: Expected tab texture enabled. system.c:2218: Test failed: 0x6 to 0x8: Expected tab texture enabled. system.c:2218: Test failed: 0x6 to 0x6: Expected tab texture enabled. system.c:2244: Test failed: 0x6 to 0x6: Expected tab texture enabled. system.c:2218: Test failed: 0x6 to 0xa: Expected tab texture enabled. system.c:2218: Test failed: 0x6 to 0: Expected tab texture enabled. system.c:2244: Test failed: 0x6 to 0: Expected tab texture enabled. system.c:2218: Test failed: 0x6 to 0x3: Expected tab texture enabled. system.c:2218: Test failed: 0x6 to 0xe: Expected tab texture enabled. system.c:2218: Test failed: 0xa to 0x1: Expected tab texture enabled. system.c:2218: Test failed: 0xa to 0x2: Expected tab texture enabled. system.c:2244: Test failed: 0xa to 0x2: Expected tab texture enabled. system.c:2218: Test failed: 0xa to 0x4: Expected tab texture enabled. system.c:2218: Test failed: 0xa to 0x8: Expected tab texture enabled. system.c:2244: Test failed: 0xa to 0x8: Expected tab texture enabled. system.c:2218: Test failed: 0xa to 0x6: Expected tab texture enabled. system.c:2218: Test failed: 0xa to 0xa: Expected tab texture enabled. system.c:2244: Test failed: 0xa to 0xa: Expected tab texture enabled. system.c:2218: Test failed: 0xa to 0: Expected tab texture enabled. system.c:2244: Test failed: 0xa to 0: Expected tab texture enabled. system.c:2218: Test failed: 0xa to 0x3: Expected tab texture enabled. system.c:2218: Test failed: 0xa to 0xe: Expected tab texture enabled. system.c:2244: Test failed: 0 to 0x6: Expected tab texture enabled. system.c:2244: Test failed: 0 to 0xa: Expected tab texture enabled. system.c:2244: Test failed: 0x3 to 0x6: Expected tab texture enabled. system.c:2244: Test failed: 0x3 to 0xa: Expected tab texture enabled. system.c:2302: Test failed: "Button" 0: Expected tab texture enabled. system.c:2325: Test failed: "Button" 0: Expected tab texture enabled. system.c:2302: Test failed: "Button" 0x1: Expected tab texture enabled. system.c:2325: Test failed: "Button" 0x1: Expected tab texture enabled. system.c:2302: Test failed: "Button" 0x2: Expected tab texture enabled. system.c:2325: Test failed: "Button" 0x2: Expected tab texture enabled. system.c:2302: Test failed: "Button" 0x3: Expected tab texture enabled. system.c:2325: Test failed: "Button" 0x3: Expected tab texture enabled. system.c:2302: Test failed: "Button" 0x4: Expected tab texture enabled. system.c:2325: Test failed: "Button" 0x4: Expected tab texture enabled. system.c:2302: Test failed: "Button" 0x5: Expected tab texture enabled. system.c:2325: Test failed: "Button" 0x5: Expected tab texture enabled. system.c:2302: Test failed: "Button" 0x6: Expected tab texture enabled. system.c:2325: Test failed: "Button" 0x6: Expected tab texture enabled. system.c:2302: Test failed: "Button" 0x7: Expected tab texture enabled. system.c:2325: Test failed: "Button" 0x7: Expected tab texture enabled. system.c:2302: Test failed: "Button" 0x8: Expected tab texture enabled. system.c:2325: Test failed: "Button" 0x8: Expected tab texture enabled. system.c:2302: Test failed: "Button" 0x9: Expected tab texture enabled. system.c:2325: Test failed: "Button" 0x9: Expected tab texture enabled. system.c:2302: Test failed: "Button" 0xa: Expected tab texture enabled. system.c:2325: Test failed: "Button" 0xa: Expected tab texture enabled. system.c:2302: Test failed: "Button" 0xb: Expected tab texture enabled. system.c:2325: Test failed: "Button" 0xb: Expected tab texture enabled. system.c:2302: Test failed: "Button" 0xc: Expected tab texture enabled. system.c:2325: Test failed: "Button" 0xc: Expected tab texture enabled. system.c:2302: Test failed: "Button" 0xd: Expected tab texture enabled. system.c:2325: Test failed: "Button" 0xd: Expected tab texture enabled. system.c:2302: Test failed: "Button" 0xe: Expected tab texture enabled. system.c:2325: Test failed: "Button" 0xe: Expected tab texture enabled. system.c:2302: Test failed: "Button" 0xf: Expected tab texture enabled. system.c:2325: Test failed: "Button" 0xf: Expected tab texture enabled. system.c:2302: Test failed: "Static" 0: Expected tab texture enabled. system.c:2325: Test failed: "Static" 0: Expected tab texture enabled. system.c:2302: Test failed: "Static" 0x3: Expected tab texture enabled. system.c:2325: Test failed: "Static" 0x3: Expected tab texture enabled. system.c:2302: Test failed: "Static" 0x4: Expected tab texture enabled. system.c:2325: Test failed: "Static" 0x4: Expected tab texture enabled. system.c:2302: Test failed: "Static" 0xd: Expected tab texture enabled. system.c:2325: Test failed: "Static" 0xd: Expected tab texture enabled. system.c:2302: Test failed: "Static" 0xe: Expected tab texture enabled. system.c:2325: Test failed: "Static" 0xe: Expected tab texture enabled. system.c:2302: Test failed: "Static" 0xf: Expected tab texture enabled. system.c:2325: Test failed: "Static" 0xf: Expected tab texture enabled. system.c:2302: Test failed: "Static" 0x10: Expected tab texture enabled. system.c:2325: Test failed: "Static" 0x10: Expected tab texture enabled.
=== w7u_el (32 bit report) ===
uxtheme: system.c:2629: Test failed: ShouldSystemUseDarkMode set last error: 5. system.c:1945: Test failed: Expected brush changed. system.c:1952: Test failed: Expected a different brush. system.c:1970: Test failed: Expected a different brush. system.c:1981: Test failed: Expected a different brush. system.c:2005: Test failed: OpenThemeData failed. system.c:2009: Test failed: GetThemePartSize failed, hr 0x80070006. system.c:2032: Test failed: msg 0x132: Expected (-1,-2), got (0,0). system.c:2040: Test failed: msg 0x132: Expected mode 0x1, got 0x2. system.c:2055: Test failed: msg 0x132: Expected brush color 0, got 0xf0f0f0. system.c:2056: Test failed: msg 0x132: Expected brush style 0x3, got 0. system.c:2061: Test failed: msg 0x132: GetObjectA failed, error 2147943568. system.c:2067: Test failed: msg 0x132: Expected a different brush. system.c:2075: Test failed: msg 0x132: Expected a different brush. system.c:2032: Test failed: msg 0x135: Expected (-1,-2), got (0,0). system.c:2040: Test failed: msg 0x135: Expected mode 0x1, got 0x2. system.c:2055: Test failed: msg 0x135: Expected brush color 0, got 0xf0f0f0. system.c:2056: Test failed: msg 0x135: Expected brush style 0x3, got 0. system.c:2061: Test failed: msg 0x135: GetObjectA failed, error 2147943568. system.c:2067: Test failed: msg 0x135: Expected a different brush. system.c:2075: Test failed: msg 0x135: Expected a different brush. system.c:2032: Test failed: msg 0x136: Expected (-1,-2), got (0,0). system.c:2040: Test failed: msg 0x136: Expected mode 0x1, got 0x2. system.c:2055: Test failed: msg 0x136: Expected brush color 0, got 0xf0f0f0. system.c:2056: Test failed: msg 0x136: Expected brush style 0x3, got 0. system.c:2061: Test failed: msg 0x136: GetObjectA failed, error 2147943568. system.c:2067: Test failed: msg 0x136: Expected a different brush. system.c:2075: Test failed: msg 0x136: Expected a different brush. system.c:2088: Test failed: msg 0x136: Expected a different brush. system.c:2090: Test failed: msg 0x136: Expected a different brush. system.c:2032: Test failed: msg 0x138: Expected (-1,-2), got (0,0). system.c:2040: Test failed: msg 0x138: Expected mode 0x1, got 0x2. system.c:2055: Test failed: msg 0x138: Expected brush color 0, got 0xf0f0f0. system.c:2056: Test failed: msg 0x138: Expected brush style 0x3, got 0. system.c:2061: Test failed: msg 0x138: GetObjectA failed, error 2147943568. system.c:2067: Test failed: msg 0x138: Expected a different brush. system.c:2075: Test failed: msg 0x138: Expected a different brush. system.c:2163: Test failed: Expected a different brush. system.c:2244: Test failed: 0x1 to 0x6: Expected tab texture enabled. system.c:2244: Test failed: 0x1 to 0xa: Expected tab texture enabled. system.c:2244: Test failed: 0x2 to 0x4: Expected tab texture enabled. system.c:2244: Test failed: 0x2 to 0x8: Expected tab texture enabled. system.c:2244: Test failed: 0x2 to 0x6: Expected tab texture enabled. system.c:2244: Test failed: 0x2 to 0xa: Expected tab texture enabled. system.c:2244: Test failed: 0x4 to 0x2: Expected tab texture enabled. system.c:2244: Test failed: 0x4 to 0x6: Expected tab texture enabled. system.c:2244: Test failed: 0x8 to 0x2: Expected tab texture enabled. system.c:2244: Test failed: 0x8 to 0xa: Expected tab texture enabled. system.c:2218: Test failed: 0x6 to 0x1: Expected tab texture enabled. system.c:2218: Test failed: 0x6 to 0x2: Expected tab texture enabled. system.c:2244: Test failed: 0x6 to 0x2: Expected tab texture enabled. system.c:2218: Test failed: 0x6 to 0x4: Expected tab texture enabled. system.c:2244: Test failed: 0x6 to 0x4: Expected tab texture enabled. system.c:2218: Test failed: 0x6 to 0x8: Expected tab texture enabled. system.c:2218: Test failed: 0x6 to 0x6: Expected tab texture enabled. system.c:2244: Test failed: 0x6 to 0x6: Expected tab texture enabled. system.c:2218: Test failed: 0x6 to 0xa: Expected tab texture enabled. system.c:2218: Test failed: 0x6 to 0: Expected tab texture enabled. system.c:2244: Test failed: 0x6 to 0: Expected tab texture enabled. system.c:2218: Test failed: 0x6 to 0x3: Expected tab texture enabled. system.c:2218: Test failed: 0x6 to 0xe: Expected tab texture enabled. system.c:2218: Test failed: 0xa to 0x1: Expected tab texture enabled. system.c:2218: Test failed: 0xa to 0x2: Expected tab texture enabled. system.c:2244: Test failed: 0xa to 0x2: Expected tab texture enabled. system.c:2218: Test failed: 0xa to 0x4: Expected tab texture enabled. system.c:2218: Test failed: 0xa to 0x8: Expected tab texture enabled. system.c:2244: Test failed: 0xa to 0x8: Expected tab texture enabled. system.c:2218: Test failed: 0xa to 0x6: Expected tab texture enabled. system.c:2218: Test failed: 0xa to 0xa: Expected tab texture enabled. system.c:2244: Test failed: 0xa to 0xa: Expected tab texture enabled. system.c:2218: Test failed: 0xa to 0: Expected tab texture enabled. system.c:2244: Test failed: 0xa to 0: Expected tab texture enabled. system.c:2218: Test failed: 0xa to 0x3: Expected tab texture enabled. system.c:2218: Test failed: 0xa to 0xe: Expected tab texture enabled. system.c:2244: Test failed: 0 to 0x6: Expected tab texture enabled. system.c:2244: Test failed: 0 to 0xa: Expected tab texture enabled. system.c:2244: Test failed: 0x3 to 0x6: Expected tab texture enabled. system.c:2244: Test failed: 0x3 to 0xa: Expected tab texture enabled. system.c:2302: Test failed: "Button" 0: Expected tab texture enabled. system.c:2325: Test failed: "Button" 0: Expected tab texture enabled. system.c:2302: Test failed: "Button" 0x1: Expected tab texture enabled. system.c:2325: Test failed: "Button" 0x1: Expected tab texture enabled. system.c:2302: Test failed: "Button" 0x2: Expected tab texture enabled. system.c:2325: Test failed: "Button" 0x2: Expected tab texture enabled. system.c:2302: Test failed: "Button" 0x3: Expected tab texture enabled. system.c:2325: Test failed: "Button" 0x3: Expected tab texture enabled. system.c:2302: Test failed: "Button" 0x4: Expected tab texture enabled. system.c:2325: Test failed: "Button" 0x4: Expected tab texture enabled. system.c:2302: Test failed: "Button" 0x5: Expected tab texture enabled. system.c:2325: Test failed: "Button" 0x5: Expected tab texture enabled. system.c:2302: Test failed: "Button" 0x6: Expected tab texture enabled. system.c:2325: Test failed: "Button" 0x6: Expected tab texture enabled. system.c:2302: Test failed: "Button" 0x7: Expected tab texture enabled. system.c:2325: Test failed: "Button" 0x7: Expected tab texture enabled. system.c:2302: Test failed: "Button" 0x8: Expected tab texture enabled. system.c:2325: Test failed: "Button" 0x8: Expected tab texture enabled. system.c:2302: Test failed: "Button" 0x9: Expected tab texture enabled. system.c:2325: Test failed: "Button" 0x9: Expected tab texture enabled. system.c:2302: Test failed: "Button" 0xa: Expected tab texture enabled. system.c:2325: Test failed: "Button" 0xa: Expected tab texture enabled. system.c:2302: Test failed: "Button" 0xb: Expected tab texture enabled. system.c:2325: Test failed: "Button" 0xb: Expected tab texture enabled. system.c:2302: Test failed: "Button" 0xc: Expected tab texture enabled. system.c:2325: Test failed: "Button" 0xc: Expected tab texture enabled. system.c:2302: Test failed: "Button" 0xd: Expected tab texture enabled. system.c:2325: Test failed: "Button" 0xd: Expected tab texture enabled. system.c:2302: Test failed: "Button" 0xe: Expected tab texture enabled. system.c:2325: Test failed: "Button" 0xe: Expected tab texture enabled. system.c:2302: Test failed: "Button" 0xf: Expected tab texture enabled. system.c:2325: Test failed: "Button" 0xf: Expected tab texture enabled. system.c:2302: Test failed: "Static" 0: Expected tab texture enabled. system.c:2325: Test failed: "Static" 0: Expected tab texture enabled. system.c:2302: Test failed: "Static" 0x3: Expected tab texture enabled. system.c:2325: Test failed: "Static" 0x3: Expected tab texture enabled. system.c:2302: Test failed: "Static" 0x4: Expected tab texture enabled. system.c:2325: Test failed: "Static" 0x4: Expected tab texture enabled. system.c:2302: Test failed: "Static" 0xd: Expected tab texture enabled. system.c:2325: Test failed: "Static" 0xd: Expected tab texture enabled. system.c:2302: Test failed: "Static" 0xe: Expected tab texture enabled. system.c:2325: Test failed: "Static" 0xe: Expected tab texture enabled. system.c:2302: Test failed: "Static" 0xf: Expected tab texture enabled. system.c:2325: Test failed: "Static" 0xf: Expected tab texture enabled. system.c:2302: Test failed: "Static" 0x10: Expected tab texture enabled. system.c:2325: Test failed: "Static" 0x10: Expected tab texture enabled.
=== w8 (32 bit report) ===
uxtheme: system.c:2631: Test failed: Expected value 0, got -2147024890.
=== w8adm (32 bit report) ===
uxtheme: system.c:2631: Test failed: Expected value 0, got -2147024890.
=== w864 (32 bit report) ===
uxtheme: system.c:2631: Test failed: Expected value 0, got -2147024890.
=== w1064v1507 (32 bit report) ===
uxtheme: 0394:system: unhandled exception c0000005 at 74948B41
=== w1064v1809 (32 bit report) ===
uxtheme: system.c:2629: Test failed: ShouldSystemUseDarkMode set last error: 0. system.c:2631: Test failed: Expected value 0, got -2147467259.
=== w1064_tsign (32 bit report) ===
uxtheme: system.c:2631: Test failed: Expected value 0, got 1.
=== w10pro64 (32 bit report) ===
uxtheme: system.c:2631: Test failed: Expected value 0, got 1.
=== w10pro64_en_AE_u8 (32 bit report) ===
uxtheme: system.c:2631: Test failed: Expected value 0, got 1.
=== w864 (64 bit report) ===
uxtheme: system.c:2631: Test failed: Expected value 0, got -2147024890.
=== w1064v1507 (64 bit report) ===
uxtheme: 05c4:system: unhandled exception c0000005 at 00007FFAD91E50FB
=== w1064v1809 (64 bit report) ===
uxtheme: system.c:2629: Test failed: ShouldSystemUseDarkMode set last error: 0. system.c:2631: Test failed: Expected value 0, got -2147467259.
=== w1064_2qxl (64 bit report) ===
uxtheme: system.c:2631: Test failed: Expected value 0, got 1.
=== w1064_adm (64 bit report) ===
uxtheme: system.c:2631: Test failed: Expected value 0, got 1.
=== w1064_tsign (64 bit report) ===
uxtheme: system.c:2631: Test failed: Expected value 0, got 1.
=== w10pro64 (64 bit report) ===
uxtheme: system.c:2631: Test failed: Expected value 0, got 1.
=== w10pro64_ar (64 bit report) ===
uxtheme: system.c:2631: Test failed: Expected value 0, got 1.
=== w10pro64_ja (64 bit report) ===
uxtheme: system.c:2631: Test failed: Expected value 0, got 1.
=== w10pro64_zh_CN (64 bit report) ===
uxtheme: system.c:2631: Test failed: Expected value 0, got 1.
On Sat Sep 30 15:14:58 2023 +0000, Zhiyi Zhang wrote:
I think these tests might be a bit too much. I like the initial version that uses RegGetValueA() and confirms the registry value is the opposite of the ShouldSystemUseDarkMode. With some checks for the last error code and I think that's enough. These newly added tests confirm caching for ShouldSystemUseDarkMode() and that's good. However, ShouldSystemUseDarkMode() still need to query the registry key so it's not that useful.
Also, what I thought was caching was actually the function reading from SystemUsesLightTheme, so that whole part of the test was useless. (You can also test this on Windows as when the registry values are mismatched, the test fails.)
Added this to latest version of commit.
On Sat Sep 30 19:13:43 2023 +0000, Helix Graziani wrote:
changed this line in [version 9 of the diff](/wine/wine/-/merge_requests/3959/diffs?diff_id=73136&start_sha=d04da6e6b4d01592887ced222981ae3704236edf#978755c9bd8ab45c22e7b177eb90b114a460dfdf_2657_2626)
I noticed in testing that the function doesn't seem to set the last error on Windows. Does your source say in what case it sets the last error?
On Sat Sep 30 19:18:27 2023 +0000, Helix Graziani wrote:
I noticed in testing that the function doesn't seem to set the last error on Windows. Does your source say in what case it sets the last error?
If tests show that the function doesn't change the last error code, then you don't set the last error code in the function implementation.
Zhiyi Zhang (@zhiyi) commented about dlls/uxtheme/tests/system.c:
DestroyWindow(hwnd);
}
+static void test_ShouldSystemUseDarkMode(void) +{
- DWORD light_theme, light_theme_size = sizeof(light_theme), last_error;
- BOOL function_result;
result is enough.
Zhiyi Zhang (@zhiyi) commented about dlls/uxtheme/tests/system.c:
- if (ls == ERROR_FILE_NOT_FOUND)
- {
light_theme = 1;
ls = 0;
- }
- ok(ls == 0, "RegGetValue failed: %ld.\n", ls);
- /* Call ShouldSystemUseDarkMode() and check for errors */
- SetLastError(0xdeadbeef);
- function_result = pShouldSystemUseDarkMode();
- last_error = GetLastError();
- ok(last_error == 0xdeadbeef, "ShouldSystemUseDarkMode set last error: %ld.\n", last_error);
- ok(function_result == !light_theme, "Expected value %d, got %d.\n",
!light_theme, function_result);
Delete this extra line.
Zhiyi Zhang (@zhiyi) commented about dlls/uxtheme/tests/system.c:
- ls = RegGetValueW(HKEY_CURRENT_USER,
L"Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize",
L"AppsUseLightTheme", RRF_RT_REG_DWORD, NULL, &light_theme, &light_theme_size);
- if (ls == ERROR_FILE_NOT_FOUND)
- {
light_theme = 1;
ls = 0;
- }
- ok(ls == 0, "RegGetValue failed: %ld.\n", ls);
- /* Call ShouldSystemUseDarkMode() and check for errors */
- SetLastError(0xdeadbeef);
- function_result = pShouldSystemUseDarkMode();
- last_error = GetLastError();
- ok(last_error == 0xdeadbeef, "ShouldSystemUseDarkMode set last error: %ld.\n", last_error);
This line also seems extra.