uxtheme: If the application class is already set then OpenThemeData() should fail.

Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
This commit is contained in:
Dmitry Timoshkov 2023-11-02 14:21:36 +03:00 committed by Alexandre Julliard
parent 87f1a38019
commit dfffe7b49c
2 changed files with 12 additions and 8 deletions

View file

@ -1076,9 +1076,12 @@ PTHEME_CLASS MSSTYLES_OpenThemeClass(LPCWSTR pszAppName, LPCWSTR pszClassList, U
parse_app_class_name(buf, szAppName, szClassName);
if (szAppName[0])
cls = MSSTYLES_FindClass(tfActiveTheme, szAppName, szClassName);
else
cls = MSSTYLES_FindClass(tfActiveTheme, pszAppName, szClassName);
{
/* If the application class is already set then fail */
if (pszAppName) return NULL;
pszAppName = szAppName;
}
cls = MSSTYLES_FindClass(tfActiveTheme, pszAppName, szClassName);
/* Fall back to default class if the specified subclass is not found */
if (!cls) cls = MSSTYLES_FindClass(tfActiveTheme, NULL, szClassName);
@ -1088,9 +1091,12 @@ PTHEME_CLASS MSSTYLES_OpenThemeClass(LPCWSTR pszAppName, LPCWSTR pszClassList, U
if(!cls && *start) {
parse_app_class_name(start, szAppName, szClassName);
if (szAppName[0])
cls = MSSTYLES_FindClass(tfActiveTheme, szAppName, szClassName);
else
cls = MSSTYLES_FindClass(tfActiveTheme, pszAppName, szClassName);
{
/* If the application class is already set then fail */
if (pszAppName) return NULL;
pszAppName = szAppName;
}
cls = MSSTYLES_FindClass(tfActiveTheme, pszAppName, szClassName);
/* Fall back to default class if the specified subclass is not found */
if (!cls) cls = MSSTYLES_FindClass(tfActiveTheme, NULL, szClassName);

View file

@ -562,9 +562,7 @@ static void test_OpenThemeData(void)
ok(hRes == S_OK, "Got unexpected hr %#lx.\n", hRes);
SetLastError(0xdeadbeef);
hTheme = OpenThemeData(hWnd, L"explorer::treeview");
todo_wine
ok(!hTheme, "OpenThemeData() should fail\n");
todo_wine
ok(GetLastError() == E_PROP_ID_UNSUPPORTED, "Got unexpected %#lx.\n", GetLastError());
SetWindowTheme(hWnd, NULL, NULL);