Changelog * dlls/shell32/shell32_main.h * dlls/shell32/shfldr_desktop.c * dlls/shell32/shfldr_fs.c * dlls/shell32/shfldr_mycomp.c Add support for Unicode IExtractIcon creation in IShellFolder->GetUIObjectOf As usual X11/BSD and LGPL license compatible Rolf Kalbermatter Index: dlls/shell32/shell32_main.h =================================================================== RCS file: /home/wine/wine/dlls/shell32/shell32_main.h,v retrieving revision 1.59 diff -u -r1.59 shell32_main.h --- dlls/shell32/shell32_main.h 6 Dec 2002 23:20:52 -0000 1.59 +++ dlls/shell32/shell32_main.h 14 Dec 2002 15:48:31 -0000 @@ -92,6 +92,7 @@ LPENUMIDLIST IEnumIDList_Constructor(LPCSTR,DWORD,DWORD); LPEXTRACTICONA IExtractIconA_Constructor(LPITEMIDLIST); +LPEXTRACTICONW IExtractIconW_Constructor(LPITEMIDLIST); HRESULT CreateStreamOnFile (LPCSTR pszFilename, IStream ** ppstm); /* FIXME: rename the functions when the shell32.dll has it's own exports namespace */ Index: dlls/shell32/shfldr_desktop.c =================================================================== RCS file: /home/wine/wine/dlls/shell32/shfldr_desktop.c,v retrieving revision 1.4 diff -u -r1.4 shfldr_desktop.c --- dlls/shell32/shfldr_desktop.c 5 Dec 2002 20:33:08 -0000 1.4 +++ dlls/shell32/shfldr_desktop.c 14 Dec 2002 15:42:26 -0000 @@ -406,6 +406,11 @@ } else if (IsEqualIID (riid, &IID_IExtractIconA) && (cidl == 1)) { pidl = ILCombine (This->pidlRoot, apidl[0]); pObj = (LPUNKNOWN) IExtractIconA_Constructor (pidl); + SHFree (pidl); + hr = S_OK; + } else if (IsEqualIID (riid, &IID_IExtractIconW) && (cidl == 1)) { + pidl = ILCombine (This->pidlRoot, apidl[0]); + pObj = (LPUNKNOWN) IExtractIconW_Constructor (pidl); SHFree (pidl); hr = S_OK; } else if (IsEqualIID (riid, &IID_IDropTarget) && (cidl >= 1)) { Index: dlls/shell32/shfldr_fs.c =================================================================== RCS file: /home/wine/wine/dlls/shell32/shfldr_fs.c,v retrieving revision 1.4 diff -u -r1.4 shfldr_fs.c --- dlls/shell32/shfldr_fs.c 13 Dec 2002 00:36:52 -0000 1.4 +++ dlls/shell32/shfldr_fs.c 14 Dec 2002 15:45:15 -0000 @@ -559,6 +559,11 @@ pObj = (LPUNKNOWN) IExtractIconA_Constructor (pidl); SHFree (pidl); hr = S_OK; + } else if (IsEqualIID (riid, &IID_IExtractIconW) && (cidl == 1)) { + pidl = ILCombine (This->pidlRoot, apidl[0]); + pObj = (LPUNKNOWN) IExtractIconW_Constructor (pidl); + SHFree (pidl); + hr = S_OK; } else if (IsEqualIID (riid, &IID_IDropTarget) && (cidl >= 1)) { hr = IShellFolder_QueryInterface (iface, &IID_IDropTarget, (LPVOID *) & pObj); } else { Index: dlls/shell32/shfldr_mycomp.c =================================================================== RCS file: /home/wine/wine/dlls/shell32/shfldr_mycomp.c,v retrieving revision 1.4 diff -u -r1.4 shfldr_mycomp.c --- dlls/shell32/shfldr_mycomp.c 5 Dec 2002 20:33:08 -0000 1.4 +++ dlls/shell32/shfldr_mycomp.c 14 Dec 2002 15:46:14 -0000 @@ -388,6 +388,11 @@ pObj = (LPUNKNOWN) IExtractIconA_Constructor (pidl); SHFree (pidl); hr = S_OK; + } else if (IsEqualIID (riid, &IID_IExtractIconW) && (cidl == 1)) { + pidl = ILCombine (This->pidlRoot, apidl[0]); + pObj = (LPUNKNOWN) IExtractIconW_Constructor (pidl); + SHFree (pidl); + hr = S_OK; } else if (IsEqualIID (riid, &IID_IDropTarget) && (cidl >= 1)) { hr = IShellFolder_QueryInterface (iface, &IID_IDropTarget, (LPVOID *) & pObj); } else {