uxtheme: Do not overwrite system metrics when loading the same theme.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=51986 Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=52025 Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
a9e00347b7
commit
ea71625cf1
|
@ -421,7 +421,7 @@ static void UXTHEME_SaveSystemMetrics(struct system_metrics *metrics, BOOL send_
|
|||
*/
|
||||
HRESULT UXTHEME_SetActiveTheme(PTHEME_FILE tf)
|
||||
{
|
||||
BOOL ret, loaded_before = FALSE;
|
||||
BOOL ret, loaded_before = FALSE, same_theme = FALSE;
|
||||
struct system_metrics metrics;
|
||||
DWORD size;
|
||||
HKEY hKey;
|
||||
|
@ -430,6 +430,9 @@ HRESULT UXTHEME_SetActiveTheme(PTHEME_FILE tf)
|
|||
|
||||
if(tf) {
|
||||
bThemeActive = TRUE;
|
||||
same_theme = !lstrcmpW(szCurrentTheme, tf->szThemeFile)
|
||||
&& !lstrcmpW(szCurrentColor, tf->pszSelectedColor)
|
||||
&& !lstrcmpW(szCurrentSize, tf->pszSelectedSize);
|
||||
lstrcpynW(szCurrentTheme, tf->szThemeFile, ARRAY_SIZE(szCurrentTheme));
|
||||
lstrcpynW(szCurrentColor, tf->pszSelectedColor, ARRAY_SIZE(szCurrentColor));
|
||||
lstrcpynW(szCurrentSize, tf->pszSelectedSize, ARRAY_SIZE(szCurrentSize));
|
||||
|
@ -446,6 +449,8 @@ HRESULT UXTHEME_SetActiveTheme(PTHEME_FILE tf)
|
|||
WARN("Failed to get LoadedBefore: %d\n", GetLastError());
|
||||
RegCloseKey(hKey);
|
||||
}
|
||||
if (loaded_before && same_theme)
|
||||
return MSSTYLES_SetActiveTheme(tf, FALSE);
|
||||
|
||||
if (!loaded_before && ret)
|
||||
UXTHEME_SaveUnthemedSystemMetrics(&metrics);
|
||||
|
|
Loading…
Reference in New Issue