From 8c36300c0b2c5e65b046f80f8f300971aec72f35 Mon Sep 17 00:00:00 2001 From: Johannes Anderwald Date: Fri, 18 Sep 2009 00:48:47 +0000 Subject: [PATCH] - Allow creating a copy of a file residing in the same directory - Free the correct the buffer - Romanian language needs to be updated See issue #4846 for more details. svn path=/trunk/; revision=43070 --- reactos/dll/win32/shell32/lang/bg-BG.rc | 1 + reactos/dll/win32/shell32/lang/ca-ES.rc | 1 + reactos/dll/win32/shell32/lang/cs-CZ.rc | 1 + reactos/dll/win32/shell32/lang/da-DK.rc | 1 + reactos/dll/win32/shell32/lang/de-DE.rc | 1 + reactos/dll/win32/shell32/lang/el-GR.rc | 1 + reactos/dll/win32/shell32/lang/en-GB.rc | 1 + reactos/dll/win32/shell32/lang/en-US.rc | 1 + reactos/dll/win32/shell32/lang/es-ES.rc | 1 + reactos/dll/win32/shell32/lang/fi-FI.rc | 1 + reactos/dll/win32/shell32/lang/fr-FR.rc | 1 + reactos/dll/win32/shell32/lang/hu-HU.rc | 1 + reactos/dll/win32/shell32/lang/it-IT.rc | 1 + reactos/dll/win32/shell32/lang/ja-JP.rc | 1 + reactos/dll/win32/shell32/lang/ko-KR.rc | 1 + reactos/dll/win32/shell32/lang/nl-NL.rc | 1 + reactos/dll/win32/shell32/lang/no-NO.rc | 2 +- reactos/dll/win32/shell32/lang/pl-PL.rc | 1 + reactos/dll/win32/shell32/lang/pt-BR.rc | 1 + reactos/dll/win32/shell32/lang/pt-PT.rc | 1 + reactos/dll/win32/shell32/lang/ru-RU.rc | 1 + reactos/dll/win32/shell32/lang/sk-SK.rc | 1 + reactos/dll/win32/shell32/lang/sl-SI.rc | 1 + reactos/dll/win32/shell32/lang/sv-SE.rc | 1 + reactos/dll/win32/shell32/lang/tr-TR.rc | 1 + reactos/dll/win32/shell32/lang/uk-UA.rc | 1 + reactos/dll/win32/shell32/lang/zh-CN.rc | 1 + reactos/dll/win32/shell32/lang/zh-TW.rc | 2 +- reactos/dll/win32/shell32/precomp.h | 1 + reactos/dll/win32/shell32/shfldr_desktop.c | 28 ++++++++++++++++--- reactos/dll/win32/shell32/shfldr_fs.c | 31 +++++++++++++++++----- reactos/dll/win32/shell32/shresdef.h | 1 + reactos/dll/win32/shell32/shv_def_cmenu.c | 7 ++++- reactos/dll/win32/shell32/undocshell.h | 2 ++ 34 files changed, 87 insertions(+), 13 deletions(-) diff --git a/reactos/dll/win32/shell32/lang/bg-BG.rc b/reactos/dll/win32/shell32/lang/bg-BG.rc index 20d27e51c60..121ae83b594 100644 --- a/reactos/dll/win32/shell32/lang/bg-BG.rc +++ b/reactos/dll/win32/shell32/lang/bg-BG.rc @@ -749,6 +749,7 @@ BEGIN IDS_INSTALLNEWFONT "Ñëàãàíå íà íîâ øðèôò..." IDS_DEFAULT_CLUSTER_SIZE "Ïîäðàçáèðàí ðàçïðåäåëèòåëåí ðàçìåð" + IDS_COPY_OF "Copy of" END diff --git a/reactos/dll/win32/shell32/lang/ca-ES.rc b/reactos/dll/win32/shell32/lang/ca-ES.rc index 0cc5637f269..df5cb9e4b24 100644 --- a/reactos/dll/win32/shell32/lang/ca-ES.rc +++ b/reactos/dll/win32/shell32/lang/ca-ES.rc @@ -748,4 +748,5 @@ BEGIN IDS_INSTALLNEWFONT "Install New Font..." IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" + IDS_COPY_OF "Copy of" END diff --git a/reactos/dll/win32/shell32/lang/cs-CZ.rc b/reactos/dll/win32/shell32/lang/cs-CZ.rc index ae55c09196f..e63d18ef126 100644 --- a/reactos/dll/win32/shell32/lang/cs-CZ.rc +++ b/reactos/dll/win32/shell32/lang/cs-CZ.rc @@ -749,4 +749,5 @@ BEGIN IDS_INSTALLNEWFONT "Install New Font..." IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" + IDS_COPY_OF "Copy of" END diff --git a/reactos/dll/win32/shell32/lang/da-DK.rc b/reactos/dll/win32/shell32/lang/da-DK.rc index ed886403bb7..40e1eabce06 100644 --- a/reactos/dll/win32/shell32/lang/da-DK.rc +++ b/reactos/dll/win32/shell32/lang/da-DK.rc @@ -737,4 +737,5 @@ BEGIN IDS_INSTALLNEWFONT "Install New Font..." IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" + IDS_COPY_OF "Copy of" END diff --git a/reactos/dll/win32/shell32/lang/de-DE.rc b/reactos/dll/win32/shell32/lang/de-DE.rc index 4fddb91e164..cb3cb1bdb9c 100644 --- a/reactos/dll/win32/shell32/lang/de-DE.rc +++ b/reactos/dll/win32/shell32/lang/de-DE.rc @@ -752,4 +752,5 @@ BEGIN IDS_INSTALLNEWFONT "Neue Schriftart installieren..." IDS_DEFAULT_CLUSTER_SIZE "Standardgröße" + IDS_COPY_OF "Kopie von" END diff --git a/reactos/dll/win32/shell32/lang/el-GR.rc b/reactos/dll/win32/shell32/lang/el-GR.rc index daffadd56f0..6b35ec3f541 100644 --- a/reactos/dll/win32/shell32/lang/el-GR.rc +++ b/reactos/dll/win32/shell32/lang/el-GR.rc @@ -749,4 +749,5 @@ BEGIN IDS_INSTALLNEWFONT "Install New Font..." IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" + IDS_COPY_OF "Copy of" END diff --git a/reactos/dll/win32/shell32/lang/en-GB.rc b/reactos/dll/win32/shell32/lang/en-GB.rc index 4ed09ad2772..38203c24077 100644 --- a/reactos/dll/win32/shell32/lang/en-GB.rc +++ b/reactos/dll/win32/shell32/lang/en-GB.rc @@ -748,4 +748,5 @@ BEGIN IDS_INSTALLNEWFONT "Install New Font..." IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" + IDS_COPY_OF "Copy of" END diff --git a/reactos/dll/win32/shell32/lang/en-US.rc b/reactos/dll/win32/shell32/lang/en-US.rc index 236ca829ee4..63d38cba154 100644 --- a/reactos/dll/win32/shell32/lang/en-US.rc +++ b/reactos/dll/win32/shell32/lang/en-US.rc @@ -748,4 +748,5 @@ BEGIN IDS_INSTALLNEWFONT "Install New Font..." IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" + IDS_COPY_OF "Copy of" END diff --git a/reactos/dll/win32/shell32/lang/es-ES.rc b/reactos/dll/win32/shell32/lang/es-ES.rc index 70188d3f431..0c2b6e2f44b 100644 --- a/reactos/dll/win32/shell32/lang/es-ES.rc +++ b/reactos/dll/win32/shell32/lang/es-ES.rc @@ -751,4 +751,5 @@ BEGIN IDS_INSTALLNEWFONT "Instalar Nueva Fuente..." IDS_DEFAULT_CLUSTER_SIZE "Tamaño asignado por defecto" + IDS_COPY_OF "Copy of" END diff --git a/reactos/dll/win32/shell32/lang/fi-FI.rc b/reactos/dll/win32/shell32/lang/fi-FI.rc index a06449d15e3..2a1dad7e91d 100644 --- a/reactos/dll/win32/shell32/lang/fi-FI.rc +++ b/reactos/dll/win32/shell32/lang/fi-FI.rc @@ -748,4 +748,5 @@ BEGIN IDS_INSTALLNEWFONT "Install New Font..." IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" + IDS_COPY_OF "Copy of" END diff --git a/reactos/dll/win32/shell32/lang/fr-FR.rc b/reactos/dll/win32/shell32/lang/fr-FR.rc index d2ea3e0cb0f..7e3034c97dd 100644 --- a/reactos/dll/win32/shell32/lang/fr-FR.rc +++ b/reactos/dll/win32/shell32/lang/fr-FR.rc @@ -752,4 +752,5 @@ BEGIN IDS_INSTALLNEWFONT "Installer une nouvelle police..." IDS_DEFAULT_CLUSTER_SIZE "Taille d'allocation par défaut" + IDS_COPY_OF "Copy of" END diff --git a/reactos/dll/win32/shell32/lang/hu-HU.rc b/reactos/dll/win32/shell32/lang/hu-HU.rc index 3fb86116c39..6538e1547cb 100644 --- a/reactos/dll/win32/shell32/lang/hu-HU.rc +++ b/reactos/dll/win32/shell32/lang/hu-HU.rc @@ -751,4 +751,5 @@ BEGIN IDS_INSTALLNEWFONT "Install New Font..." IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" + IDS_COPY_OF "Copy of" END diff --git a/reactos/dll/win32/shell32/lang/it-IT.rc b/reactos/dll/win32/shell32/lang/it-IT.rc index 5788b1aa43b..fc6ec88e721 100644 --- a/reactos/dll/win32/shell32/lang/it-IT.rc +++ b/reactos/dll/win32/shell32/lang/it-IT.rc @@ -749,4 +749,5 @@ BEGIN IDS_INSTALLNEWFONT "Installazione nuovi Font..." IDS_DEFAULT_CLUSTER_SIZE "Dimensione predefinita di allocazione" + IDS_COPY_OF "Copy of" END diff --git a/reactos/dll/win32/shell32/lang/ja-JP.rc b/reactos/dll/win32/shell32/lang/ja-JP.rc index b627fc86215..ca84aec0865 100644 --- a/reactos/dll/win32/shell32/lang/ja-JP.rc +++ b/reactos/dll/win32/shell32/lang/ja-JP.rc @@ -749,4 +749,5 @@ BEGIN IDS_INSTALLNEWFONT "V‚µ‚¢ƒtƒHƒ“ƒg‚̃Cƒ“ƒXƒg[ƒ‹..." IDS_DEFAULT_CLUSTER_SIZE "ƒfƒtƒHƒ‹ƒg ƒAƒƒP[ƒVƒ‡ƒ“ ƒTƒCƒY" + IDS_COPY_OF "Copy of" END diff --git a/reactos/dll/win32/shell32/lang/ko-KR.rc b/reactos/dll/win32/shell32/lang/ko-KR.rc index 0f7edd88516..e9e67b71a4e 100644 --- a/reactos/dll/win32/shell32/lang/ko-KR.rc +++ b/reactos/dll/win32/shell32/lang/ko-KR.rc @@ -748,4 +748,5 @@ BEGIN IDS_INSTALLNEWFONT "Install New Font..." IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" + IDS_COPY_OF "Copy of" END diff --git a/reactos/dll/win32/shell32/lang/nl-NL.rc b/reactos/dll/win32/shell32/lang/nl-NL.rc index eb995a62a44..5ff6c83a59a 100644 --- a/reactos/dll/win32/shell32/lang/nl-NL.rc +++ b/reactos/dll/win32/shell32/lang/nl-NL.rc @@ -748,4 +748,5 @@ BEGIN IDS_INSTALLNEWFONT "Install New Font..." IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" + IDS_COPY_OF "Copy of" END diff --git a/reactos/dll/win32/shell32/lang/no-NO.rc b/reactos/dll/win32/shell32/lang/no-NO.rc index 3a694bcc048..90dc27d3aa6 100644 --- a/reactos/dll/win32/shell32/lang/no-NO.rc +++ b/reactos/dll/win32/shell32/lang/no-NO.rc @@ -751,5 +751,5 @@ BEGIN IDS_INSTALLNEWFONT "Installere nye skrifttyper..." IDS_DEFAULT_CLUSTER_SIZE "Standard tildelingsstørrelse" - + IDS_COPY_OF "Copy of" END diff --git a/reactos/dll/win32/shell32/lang/pl-PL.rc b/reactos/dll/win32/shell32/lang/pl-PL.rc index 25a4fbe54bc..c7877828959 100644 --- a/reactos/dll/win32/shell32/lang/pl-PL.rc +++ b/reactos/dll/win32/shell32/lang/pl-PL.rc @@ -755,4 +755,5 @@ BEGIN IDS_INSTALLNEWFONT "Zainstaluj Now¹ Czcionkê..." IDS_DEFAULT_CLUSTER_SIZE "Domyœlny rozmiar jednostki alokacji" + IDS_COPY_OF "Copy of" END diff --git a/reactos/dll/win32/shell32/lang/pt-BR.rc b/reactos/dll/win32/shell32/lang/pt-BR.rc index 1df03c1897d..048d4c39110 100644 --- a/reactos/dll/win32/shell32/lang/pt-BR.rc +++ b/reactos/dll/win32/shell32/lang/pt-BR.rc @@ -750,4 +750,5 @@ BEGIN IDS_INSTALLNEWFONT "Install New Font..." IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" + IDS_COPY_OF "Copy of" END diff --git a/reactos/dll/win32/shell32/lang/pt-PT.rc b/reactos/dll/win32/shell32/lang/pt-PT.rc index 665acd7961e..c20e670e3a2 100644 --- a/reactos/dll/win32/shell32/lang/pt-PT.rc +++ b/reactos/dll/win32/shell32/lang/pt-PT.rc @@ -750,4 +750,5 @@ BEGIN IDS_INSTALLNEWFONT "Install New Font..." IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" + IDS_COPY_OF "Copy of" END diff --git a/reactos/dll/win32/shell32/lang/ru-RU.rc b/reactos/dll/win32/shell32/lang/ru-RU.rc index a124b7ba434..7d6e1e1e06e 100644 --- a/reactos/dll/win32/shell32/lang/ru-RU.rc +++ b/reactos/dll/win32/shell32/lang/ru-RU.rc @@ -747,4 +747,5 @@ BEGIN IDS_INSTALLNEWFONT "Óñòàíîâèòü íîâûé øðèôò..." IDS_DEFAULT_CLUSTER_SIZE "Âûäåëÿåìûé ïî óìîë÷àíèþ ðàçìåð" + IDS_COPY_OF "Copy of" END diff --git a/reactos/dll/win32/shell32/lang/sk-SK.rc b/reactos/dll/win32/shell32/lang/sk-SK.rc index b3a8c879bf3..b68d38591ec 100644 --- a/reactos/dll/win32/shell32/lang/sk-SK.rc +++ b/reactos/dll/win32/shell32/lang/sk-SK.rc @@ -754,4 +754,5 @@ BEGIN IDS_INSTALLNEWFONT "&Nainštalova nové písmo..." IDS_DEFAULT_CLUSTER_SIZE "Predvolená alokaèná ve¾kos" //Default allocation size + IDS_COPY_OF "Copy of" END diff --git a/reactos/dll/win32/shell32/lang/sl-SI.rc b/reactos/dll/win32/shell32/lang/sl-SI.rc index 1d376509d22..876be4b4927 100644 --- a/reactos/dll/win32/shell32/lang/sl-SI.rc +++ b/reactos/dll/win32/shell32/lang/sl-SI.rc @@ -748,4 +748,5 @@ BEGIN IDS_INSTALLNEWFONT "Install New Font..." IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" + IDS_COPY_OF "Copy of" END diff --git a/reactos/dll/win32/shell32/lang/sv-SE.rc b/reactos/dll/win32/shell32/lang/sv-SE.rc index 0723e47af37..e7a520f5ba4 100644 --- a/reactos/dll/win32/shell32/lang/sv-SE.rc +++ b/reactos/dll/win32/shell32/lang/sv-SE.rc @@ -748,4 +748,5 @@ BEGIN IDS_INSTALLNEWFONT "Install New Font..." IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" + IDS_COPY_OF "Copy of" END diff --git a/reactos/dll/win32/shell32/lang/tr-TR.rc b/reactos/dll/win32/shell32/lang/tr-TR.rc index 7c422f1410c..49a154c3408 100644 --- a/reactos/dll/win32/shell32/lang/tr-TR.rc +++ b/reactos/dll/win32/shell32/lang/tr-TR.rc @@ -748,4 +748,5 @@ BEGIN IDS_INSTALLNEWFONT "Install New Font..." IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" + IDS_COPY_OF "Copy of" END diff --git a/reactos/dll/win32/shell32/lang/uk-UA.rc b/reactos/dll/win32/shell32/lang/uk-UA.rc index 081467ec411..3846965c696 100644 --- a/reactos/dll/win32/shell32/lang/uk-UA.rc +++ b/reactos/dll/win32/shell32/lang/uk-UA.rc @@ -749,4 +749,5 @@ BEGIN IDS_INSTALLNEWFONT "²íñòàëþâàòè íîâèé øðèôò..." IDS_DEFAULT_CLUSTER_SIZE "Ðîçì³ð êëàñòåðà çà ïðîìîâ÷àííÿì" + IDS_COPY_OF "Copy of" END diff --git a/reactos/dll/win32/shell32/lang/zh-CN.rc b/reactos/dll/win32/shell32/lang/zh-CN.rc index 88f36683dce..5180db558cd 100644 --- a/reactos/dll/win32/shell32/lang/zh-CN.rc +++ b/reactos/dll/win32/shell32/lang/zh-CN.rc @@ -736,5 +736,6 @@ BEGIN IDS_INSTALLNEWFONT "Install New Font..." IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" + IDS_COPY_OF "Copy of" END diff --git a/reactos/dll/win32/shell32/lang/zh-TW.rc b/reactos/dll/win32/shell32/lang/zh-TW.rc index de647ecda55..fc76bf15798 100644 --- a/reactos/dll/win32/shell32/lang/zh-TW.rc +++ b/reactos/dll/win32/shell32/lang/zh-TW.rc @@ -749,7 +749,7 @@ BEGIN IDS_INSTALLNEWFONT "Install New Font..." IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" - + IDS_COPY_OF "Copy of" END #pragma code_page(default) diff --git a/reactos/dll/win32/shell32/precomp.h b/reactos/dll/win32/shell32/precomp.h index 22c4ab686f5..affe470befe 100644 --- a/reactos/dll/win32/shell32/precomp.h +++ b/reactos/dll/win32/shell32/precomp.h @@ -60,6 +60,7 @@ #include "version.h" #include "shellfolder.h" #include "xdg.h" +#include "shellapi.h" #include "wine/debug.h" #include "wine/unicode.h" diff --git a/reactos/dll/win32/shell32/shfldr_desktop.c b/reactos/dll/win32/shell32/shfldr_desktop.c index 6e44ac2b32f..0222fe2611a 100644 --- a/reactos/dll/win32/shell32/shfldr_desktop.c +++ b/reactos/dll/win32/shell32/shfldr_desktop.c @@ -1289,8 +1289,8 @@ ISF_Desktop_ISFHelper_fnCopyItems (ISFHelper * iface, IShellFolder * pSFFrom, UI WCHAR szTargetPath[MAX_PATH]; SHFILEOPSTRUCTW op; LPITEMIDLIST pidl; - LPWSTR pszSrc, pszTarget, pszSrcList, pszTargetList; - int res; + LPWSTR pszSrc, pszTarget, pszSrcList, pszTargetList, pszFileName; + int res, length; STRRET strRet; IGenericSFImpl *This = impl_from_ISFHelper(iface); @@ -1377,8 +1377,28 @@ ISF_Desktop_ISFHelper_fnCopyItems (ISFHelper * iface, IShellFolder * pSFFrom, UI res = SHFileOperationW(&op); - HeapFree(GetProcessHeap(), 0, pszSrc); - HeapFree(GetProcessHeap(), 0, pszTarget); + if (res == DE_SAMEFILE) + { + length = wcslen(szTargetPath); + + + pszFileName = wcsrchr(pszSrcList, '\\'); + pszFileName++; + + if (LoadStringW(shell32_hInstance, IDS_COPY_FROM, pszTarget, MAX_PATH - length)) + { + wcscat(szTargetPath, L" "); + } + + wcscat(szTargetPath, pszFileName); + op.pTo = szTargetPath; + + res = SHFileOperationW(&op); + } + + + HeapFree(GetProcessHeap(), 0, pszSrcList); + HeapFree(GetProcessHeap(), 0, pszTargetList); if (res) return E_FAIL; diff --git a/reactos/dll/win32/shell32/shfldr_fs.c b/reactos/dll/win32/shell32/shfldr_fs.c index 072e6748eec..5f7c84b8919 100644 --- a/reactos/dll/win32/shell32/shfldr_fs.c +++ b/reactos/dll/win32/shell32/shfldr_fs.c @@ -1260,16 +1260,17 @@ ISFHelper_fnCopyItems (ISFHelper * iface, IShellFolder * pSFFrom, UINT cidl, WCHAR szTargetPath[MAX_PATH]; SHFILEOPSTRUCTW op; LPITEMIDLIST pidl; - LPWSTR pszSrc, pszTarget, pszSrcList, pszTargetList; - int res; + LPWSTR pszSrc, pszTarget, pszSrcList, pszTargetList, pszFileName; + int res, length; + HRESULT hr; STRRET strRet; IGenericSFImpl *This = impl_from_ISFHelper(iface); TRACE ("(%p)->(%p,%u,%p)\n", This, pSFFrom, cidl, apidl); - IShellFolder_QueryInterface (pSFFrom, &IID_IPersistFolder2, (LPVOID *) & ppf2); - if (ppf2) + hr = IShellFolder_QueryInterface (pSFFrom, &IID_IPersistFolder2, (LPVOID *) & ppf2); + if (SUCCEEDED(hr)) { if (FAILED(IPersistFolder2_GetCurFolder (ppf2, &pidl))) { @@ -1349,8 +1350,26 @@ ISFHelper_fnCopyItems (ISFHelper * iface, IShellFolder * pSFFrom, UINT cidl, res = SHFileOperationW(&op); - HeapFree(GetProcessHeap(), 0, pszSrc); - HeapFree(GetProcessHeap(), 0, pszTarget); + if (res == DE_SAMEFILE) + { + length = wcslen(szTargetPath); + + pszFileName = wcsrchr(pszSrcList, '\\'); + pszFileName++; + + if (LoadStringW(shell32_hInstance, IDS_COPY_FROM, pszTarget, MAX_PATH - length)) + { + wcscat(szTargetPath, L" "); + } + + wcscat(szTargetPath, pszFileName); + op.pTo = szTargetPath; + + res = SHFileOperationW(&op); + } + + HeapFree(GetProcessHeap(), 0, pszSrcList); + HeapFree(GetProcessHeap(), 0, pszTargetList); if (res) return E_FAIL; diff --git a/reactos/dll/win32/shell32/shresdef.h b/reactos/dll/win32/shell32/shresdef.h index 9e4030be6cf..e28efb0e240 100644 --- a/reactos/dll/win32/shell32/shresdef.h +++ b/reactos/dll/win32/shell32/shresdef.h @@ -168,6 +168,7 @@ #define IDS_RENAME 328 #define IDS_INSERT 329 #define IDS_DESCRIPTION 330 +#define IDS_COPY_OF 331 /* Note: this string is referenced from the registry */ #define IDS_RECYCLEBIN_FOLDER_NAME 8964 diff --git a/reactos/dll/win32/shell32/shv_def_cmenu.c b/reactos/dll/win32/shell32/shv_def_cmenu.c index ea146a9cbe9..c63e16bc62c 100644 --- a/reactos/dll/win32/shell32/shv_def_cmenu.c +++ b/reactos/dll/win32/shell32/shv_def_cmenu.c @@ -1052,7 +1052,12 @@ DoPaste( return E_FAIL; } - if (FAILED(IShellFolder_BindToObject(psfDesktop, pidl, NULL, &IID_IShellFolder, (LPVOID*)&psfFrom))) + if (_ILIsDesktop(pidl)) + { + /* use desktop shellfolder */ + psfFrom = psfDesktop; + } + else if (FAILED(IShellFolder_BindToObject(psfDesktop, pidl, NULL, &IID_IShellFolder, (LPVOID*)&psfFrom))) { ERR("no IShellFolder\n"); diff --git a/reactos/dll/win32/shell32/undocshell.h b/reactos/dll/win32/shell32/undocshell.h index 4f8c9994243..c56da79ffc2 100644 --- a/reactos/dll/win32/shell32/undocshell.h +++ b/reactos/dll/win32/shell32/undocshell.h @@ -81,6 +81,8 @@ BOOL WINAPI StrRetToStrNW(LPWSTR,DWORD,LPSTRRET,const ITEMIDLIST*); #define RFF_NOLABEL 0x08 #define RFF_NOSEPARATEMEM 0x20 /* NT only */ +#define DE_SAMEFILE 0x71 + /* RunFileFlg notification structure */ typedef struct { -- 2.17.1