From 49f6944ab0efa67090a80574f9a3245d7b5d6631 Mon Sep 17 00:00:00 2001 From: Johannes Anderwald Date: Thu, 17 Sep 2009 13:44:34 +0000 Subject: [PATCH] - Fix copying of files / directories in explorer view - Part 1/2 svn path=/trunk/; revision=43060 --- reactos/dll/win32/shell32/shv_def_cmenu.c | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/reactos/dll/win32/shell32/shv_def_cmenu.c b/reactos/dll/win32/shell32/shv_def_cmenu.c index 6cd921f8c6d..109918a91fe 100644 --- a/reactos/dll/win32/shell32/shv_def_cmenu.c +++ b/reactos/dll/win32/shell32/shv_def_cmenu.c @@ -1072,9 +1072,22 @@ DoPaste( } else { - /* target folder is desktop because cidl is zero */ - psfTarget = psfDesktop; - hr = S_OK; + IPersistFolder2 *ppf2 = NULL; + LPITEMIDLIST pidl; + + /* cidl is zero due to explorer view */ + hr = IShellFolder_QueryInterface (This->dcm.psf, &IID_IPersistFolder2, (LPVOID *) &ppf2); + if (SUCCEEDED(hr)) + { + hr = IPersistFolder2_GetCurFolder (ppf2, &pidl); + IPersistFolder2_Release(ppf2); + if (SUCCEEDED(hr)) + { + hr = IShellFolder_BindToObject(psfDesktop, pidl, NULL, &IID_IShellFolder, (LPVOID*)&psfTarget); + ILFree(pidl); + TRACE("psfTarget %p\n", psfTarget); + } + } } if (FAILED(hr)) @@ -1133,6 +1146,7 @@ DoPaste( _ILFreeaPidl(apidl, lpcida->cidl); ReleaseStgMedium(&medium); IDataObject_Release(pda); +ERR("CP result %x\n",hr); return S_OK; }