[UXTHEME] - When we set the desired app name and class name in SetWindowTheme we need to support empty strings meaning no themes for this window. Sort of support empty strings by replacing them with a string containing a single "0". This works since there is no app name or class name with this name. Also add some error messages.

svn path=/trunk/; revision=73898
This commit is contained in:
Giannis Adamopoulos 2017-02-25 09:23:37 +00:00
parent 777a9ec12a
commit a7d4b8d04f

View file

@ -667,14 +667,31 @@ static HRESULT UXTHEME_SetWindowProperty(HWND hwnd, ATOM aProp, LPCWSTR pszValue
{
ATOM oldValue = (ATOM)(size_t)RemovePropW(hwnd, (LPCWSTR)MAKEINTATOM(aProp));
if(oldValue)
{
DeleteAtom(oldValue);
if(pszValue) {
ATOM atValue = AddAtomW(pszValue);
if(!atValue
|| !SetPropW(hwnd, (LPCWSTR)MAKEINTATOM(aProp), (LPWSTR)MAKEINTATOM(atValue))) {
HRESULT hr = HRESULT_FROM_WIN32(GetLastError());
}
if(pszValue)
{
ATOM atValue;
/* A string with zero lenght is not acceptatble in AddAtomW but we want to support
users passing an empty string meaning they want no theme for the specified window */
if(!pszValue[0])
pszValue = L"0";
atValue = AddAtomW(pszValue);
if (!atValue)
{
ERR("AddAtomW for %S failed with last error %d!\n", pszValue, GetLastError());
return HRESULT_FROM_WIN32(GetLastError());
}
if (!SetPropW(hwnd, (LPCWSTR)MAKEINTATOM(aProp), (LPWSTR)MAKEINTATOM(atValue)))
{
ERR("SetPropW for atom %d failed with last error %d\n", aProp, GetLastError());
if(atValue) DeleteAtom(atValue);
return hr;
return HRESULT_FROM_WIN32(GetLastError());
}
}
return S_OK;