Author: gadamopoulos Date: Sat Feb 25 09:23:37 2017 New Revision: 73898
URL: http://svn.reactos.org/svn/reactos?rev=73898&view=rev Log: [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.
Modified: trunk/reactos/dll/win32/uxtheme/system.c
Modified: trunk/reactos/dll/win32/uxtheme/system.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/uxtheme/system.c?... ============================================================================== --- trunk/reactos/dll/win32/uxtheme/system.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/uxtheme/system.c [iso-8859-1] Sat Feb 25 09:23:37 2017 @@ -667,14 +667,31 @@ { 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;