Keep track of theme filename within THEME_FILE.
diff --git a/dlls/uxtheme/msstyles.c b/dlls/uxtheme/msstyles.c index 95ad222..fe106c8 100644 --- a/dlls/uxtheme/msstyles.c +++ b/dlls/uxtheme/msstyles.c
@@ -174,6 +174,9 @@ *tf = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(THEME_FILE)); (*tf)->hTheme = hTheme; + + GetFullPathNameW(lpThemeFile, MAX_PATH, (*tf)->szThemeFile, NULL); + (*tf)->pszAvailColors = pszColors; (*tf)->pszAvailSizes = pszSizes; (*tf)->pszSelectedColor = pszSelectedColor;
diff --git a/dlls/uxtheme/msstyles.h b/dlls/uxtheme/msstyles.h index f6ef348..53ef348 100644 --- a/dlls/uxtheme/msstyles.h +++ b/dlls/uxtheme/msstyles.h
@@ -59,6 +59,7 @@ typedef struct _THEME_FILE { DWORD dwRefCount; HMODULE hTheme; + WCHAR szThemeFile[MAX_PATH]; LPWSTR pszAvailColors; LPWSTR pszAvailSizes;
diff --git a/dlls/uxtheme/system.c b/dlls/uxtheme/system.c index 6bd3b78..531c1f8 100644 --- a/dlls/uxtheme/system.c +++ b/dlls/uxtheme/system.c
@@ -152,7 +152,7 @@ return hr; if(tf) { bThemeActive = TRUE; - GetModuleFileNameW(tf->hTheme, szCurrentTheme, sizeof(szCurrentTheme)/sizeof(szCurrentTheme[0])); + lstrcpynW(szCurrentTheme, tf->szThemeFile, sizeof(szCurrentTheme)/sizeof(szCurrentTheme[0])); lstrcpynW(szCurrentColor, tf->pszSelectedColor, sizeof(szCurrentColor)/sizeof(szCurrentColor[0])); lstrcpynW(szCurrentSize, tf->pszSelectedSize, sizeof(szCurrentSize)/sizeof(szCurrentSize[0])); }