mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-09-02 04:13:34 +00:00
add shell32_ros.diff
svn path=/trunk/; revision=27889
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
Index: shell32_main.c
|
||||
===================================================================
|
||||
--- shell32_main.c (revision 26448)
|
||||
+++ shell32_main.c (working copy)
|
||||
@@ -509,23 +509,59 @@
|
||||
/* get the iconlocation */
|
||||
if (SUCCEEDED(hr) && (flags & SHGFI_ICONLOCATION ))
|
||||
{
|
||||
- UINT uDummy,uFlags;
|
||||
+ if (!(flags & SHGFI_USEFILEATTRIBUTES))
|
||||
+ {
|
||||
+ UINT uDummy,uFlags;
|
||||
|
||||
- hr = IShellFolder_GetUIObjectOf(psfParent, 0, 1,
|
||||
- (LPCITEMIDLIST*)&pidlLast, &IID_IExtractIconA,
|
||||
- &uDummy, (LPVOID*)&pei);
|
||||
- if (SUCCEEDED(hr))
|
||||
+ hr = IShellFolder_GetUIObjectOf(psfParent, 0, 1,
|
||||
+ (LPCITEMIDLIST*)&pidlLast, &IID_IExtractIconA,
|
||||
+ &uDummy, (LPVOID*)&pei);
|
||||
+ if (SUCCEEDED(hr))
|
||||
+ {
|
||||
+ hr = IExtractIconW_GetIconLocation(pei, uGilFlags,
|
||||
+ szLocation, MAX_PATH, &iIndex, &uFlags);
|
||||
+ psfi->iIcon = iIndex;
|
||||
+
|
||||
+ if (!(uFlags & GIL_NOTFILENAME))
|
||||
+ lstrcpyW (psfi->szDisplayName, szLocation);
|
||||
+ else
|
||||
+ ret = FALSE;
|
||||
+
|
||||
+ IExtractIconA_Release(pei);
|
||||
+ }
|
||||
+ }
|
||||
+ else
|
||||
{
|
||||
- hr = IExtractIconW_GetIconLocation(pei, uGilFlags,
|
||||
- szLocation, MAX_PATH, &iIndex, &uFlags);
|
||||
- psfi->iIcon = iIndex;
|
||||
-
|
||||
- if (!(uFlags & GIL_NOTFILENAME))
|
||||
- lstrcpyW (psfi->szDisplayName, szLocation);
|
||||
+ if (dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
|
||||
+ {
|
||||
+ strcpyW(psfi->szDisplayName, swShell32Name);
|
||||
+ psfi->iIcon = SIC_GetIconIndex(swShell32Name, -IDI_SHELL_FOLDER, 0);
|
||||
+ }
|
||||
else
|
||||
- ret = FALSE;
|
||||
+ {
|
||||
+ WCHAR sTemp [MAX_PATH];
|
||||
+ WCHAR * szExt;
|
||||
+ DWORD dwNr=0;
|
||||
+ static const WCHAR p1W[] = {'%','1',0};
|
||||
|
||||
- IExtractIconA_Release(pei);
|
||||
+ lstrcpynW(sTemp, szFullPath, MAX_PATH);
|
||||
+
|
||||
+ psfi->iIcon = 0;
|
||||
+ szExt = (LPWSTR) PathFindExtensionW(sTemp);
|
||||
+ if ( szExt &&
|
||||
+ HCR_MapTypeToValueW(szExt, sTemp, MAX_PATH, TRUE) &&
|
||||
+ HCR_GetDefaultIconW(sTemp, sTemp, MAX_PATH, &dwNr))
|
||||
+ {
|
||||
+ if (!lstrcmpW(p1W,sTemp)) /* icon is in the file */
|
||||
+ strcpyW(psfi->szDisplayName, szFullPath);
|
||||
+ else
|
||||
+ strcpyW(psfi->szDisplayName, sTemp);
|
||||
+
|
||||
+ psfi->iIcon = SIC_GetIconIndex(psfi->szDisplayName, dwNr, 0);
|
||||
+ if (psfi->iIcon == -1)
|
||||
+ psfi->iIcon = 0;
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user