diff --git a/dll/win32/shell32/CIDLDataObj.cpp b/dll/win32/shell32/CIDLDataObj.cpp index 4b1a83a358c..02dacae6e8e 100644 --- a/dll/win32/shell32/CIDLDataObj.cpp +++ b/dll/win32/shell32/CIDLDataObj.cpp @@ -225,6 +225,21 @@ HRESULT WINAPI CIDLDataObj::Initialize(HWND hwndOwner, LPCITEMIDLIST pMyPidl, LP return S_OK; } +static HGLOBAL RenderPREFEREDDROPEFFECT (DWORD dwFlags) +{ + DWORD * pdwFlag; + HGLOBAL hGlobal; + + TRACE("(0x%08x)\n", dwFlags); + + hGlobal = GlobalAlloc(GHND|GMEM_SHARE, sizeof(DWORD)); + if(!hGlobal) return hGlobal; + pdwFlag = (DWORD*)GlobalLock(hGlobal); + *pdwFlag = dwFlags; + GlobalUnlock(hGlobal); + return hGlobal; +} + /************************************************************************** * IDataObject_fnGetData */ diff --git a/dll/win32/shell32/wine/clipboard.c b/dll/win32/shell32/wine/clipboard.c index 25cd9f543f1..fc91d077ae8 100644 --- a/dll/win32/shell32/wine/clipboard.c +++ b/dll/win32/shell32/wine/clipboard.c @@ -54,56 +54,91 @@ WINE_DEFAULT_DEBUG_CHANNEL(shell); HGLOBAL RenderHDROP(LPITEMIDLIST pidlRoot, LPITEMIDLIST * apidl, UINT cidl) { UINT i; - int size = 0; +#ifdef __REACTOS__ + int size = 0; +#else + int rootlen = 0,size = 0; + WCHAR wszRootPath[MAX_PATH]; +#endif WCHAR wszFileName[MAX_PATH]; - HGLOBAL hGlobal = NULL; + HGLOBAL hGlobal = NULL; DROPFILES *pDropFiles; int offset; - LPITEMIDLIST *pidls; +#ifdef __REACTOS__ + LPITEMIDLIST *pidls; +#endif TRACE("(%p,%p,%u)\n", pidlRoot, apidl, cidl); - pidls = (LPITEMIDLIST *)HeapAlloc(GetProcessHeap(), 0, cidl * sizeof(*pidls)); - if (!pidls) - goto cleanup; +#ifdef __REACTOS__ + pidls = (LPITEMIDLIST *)HeapAlloc(GetProcessHeap(), 0, cidl * sizeof(*pidls)); + if (!pidls) + goto cleanup; +#endif /* get the size needed */ size = sizeof(DROPFILES); +#ifndef __REACTOS__ + SHGetPathFromIDListW(pidlRoot, wszRootPath); + PathAddBackslashW(wszRootPath); + rootlen = strlenW(wszRootPath); +#endif + for (i=0; ipFiles = offset * sizeof(WCHAR); pDropFiles->fWide = TRUE; +#ifndef __REACTOS__ + strcpyW(wszFileName, wszRootPath); +#endif + for (i=0; i