mirror of
https://github.com/reactos/reactos.git
synced 2024-07-02 10:45:24 +00:00
[SHELL32]
The desktop.ini file is only meant to be read if the folder has the R (read-only) or S (system) attributes. If this causes your favorite folder to stop showing the icon, use "attrib +r <foldername>" or edit it from the properties dialog. When we add the desktop.ini files, we will also need to add the R attribute to their respective folders. Followup to CORE-9002 svn path=/trunk/; revision=68834
This commit is contained in:
parent
4b901b355e
commit
ed7c0959c6
|
@ -34,36 +34,40 @@ static HRESULT getIconLocationForFolder(LPCITEMIDLIST pidl, UINT uFlags,
|
||||||
static const WCHAR iconIndex[] = { 'I', 'c', 'o', 'n', 'I', 'n', 'd', 'e', 'x', 0 };
|
static const WCHAR iconIndex[] = { 'I', 'c', 'o', 'n', 'I', 'n', 'd', 'e', 'x', 0 };
|
||||||
static const WCHAR wszDesktopIni[] = { 'd','e','s','k','t','o','p','.','i','n','i',0 };
|
static const WCHAR wszDesktopIni[] = { 'd','e','s','k','t','o','p','.','i','n','i',0 };
|
||||||
int icon_idx;
|
int icon_idx;
|
||||||
WCHAR wszFolderPath[MAX_PATH];
|
|
||||||
|
|
||||||
if (!SHGetPathFromIDListW(pidl, wszFolderPath))
|
if (!(uFlags & GIL_DEFAULTICON) && (_ILGetFileAttributes(ILFindLastID(pidl), NULL, 0) & (FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_READONLY)) != 0 )
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
PathAppendW(wszFolderPath, wszDesktopIni);
|
|
||||||
|
|
||||||
if (!(uFlags & GIL_DEFAULTICON) && PathFileExistsW(wszFolderPath))
|
|
||||||
{
|
{
|
||||||
WCHAR wszPath[MAX_PATH];
|
WCHAR wszFolderPath[MAX_PATH];
|
||||||
WCHAR wszCLSIDValue[CHARS_IN_GUID];
|
|
||||||
|
|
||||||
if (GetPrivateProfileStringW(shellClassInfo, iconFile, NULL, wszPath, MAX_PATH, wszFolderPath))
|
if (!SHGetPathFromIDListW(pidl, wszFolderPath))
|
||||||
{
|
return FALSE;
|
||||||
ExpandEnvironmentStringsW(wszPath, szIconFile, cchMax);
|
|
||||||
|
|
||||||
*piIndex = GetPrivateProfileIntW(shellClassInfo, iconIndex, 0, wszFolderPath);
|
PathAppendW(wszFolderPath, wszDesktopIni);
|
||||||
return S_OK;
|
|
||||||
}
|
if (PathFileExistsW(wszFolderPath))
|
||||||
else if (GetPrivateProfileStringW(shellClassInfo, clsid, NULL, wszCLSIDValue, CHARS_IN_GUID, wszFolderPath) &&
|
|
||||||
HCR_GetIconW(wszCLSIDValue, szIconFile, NULL, cchMax, &icon_idx))
|
|
||||||
{
|
{
|
||||||
*piIndex = icon_idx;
|
WCHAR wszPath[MAX_PATH];
|
||||||
return S_OK;
|
WCHAR wszCLSIDValue[CHARS_IN_GUID];
|
||||||
}
|
|
||||||
else if (GetPrivateProfileStringW(shellClassInfo, clsid2, NULL, wszCLSIDValue, CHARS_IN_GUID, wszFolderPath) &&
|
if (GetPrivateProfileStringW(shellClassInfo, iconFile, NULL, wszPath, MAX_PATH, wszFolderPath))
|
||||||
HCR_GetIconW(wszCLSIDValue, szIconFile, NULL, cchMax, &icon_idx))
|
{
|
||||||
{
|
ExpandEnvironmentStringsW(wszPath, szIconFile, cchMax);
|
||||||
*piIndex = icon_idx;
|
|
||||||
return S_OK;
|
*piIndex = GetPrivateProfileIntW(shellClassInfo, iconIndex, 0, wszFolderPath);
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
else if (GetPrivateProfileStringW(shellClassInfo, clsid, NULL, wszCLSIDValue, CHARS_IN_GUID, wszFolderPath) &&
|
||||||
|
HCR_GetIconW(wszCLSIDValue, szIconFile, NULL, cchMax, &icon_idx))
|
||||||
|
{
|
||||||
|
*piIndex = icon_idx;
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
else if (GetPrivateProfileStringW(shellClassInfo, clsid2, NULL, wszCLSIDValue, CHARS_IN_GUID, wszFolderPath) &&
|
||||||
|
HCR_GetIconW(wszCLSIDValue, szIconFile, NULL, cchMax, &icon_idx))
|
||||||
|
{
|
||||||
|
*piIndex = icon_idx;
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue