From 265fce5c9f3288b555e91785302cc901ab33cb41 Mon Sep 17 00:00:00 2001 From: Takashi Sawanaka Date: Mon, 20 Jul 2020 19:14:21 +0900 Subject: [PATCH] Revert "Fix GitHub issue #294: Does not process CFSTR_PREFERREDDROPEFFECT on drag/drop" This reverts commit cd4a235b828622038786709e247715b931f0b13e. --- Src/DropHandler.cpp | 35 ++--------------------------------- 1 file changed, 2 insertions(+), 33 deletions(-) diff --git a/Src/DropHandler.cpp b/Src/DropHandler.cpp index 17adb472e..59ce01884 100644 --- a/Src/DropHandler.cpp +++ b/Src/DropHandler.cpp @@ -21,13 +21,13 @@ namespace typedef _com_ptr_t<_com_IIID> IFileOperationPtr; typedef _com_ptr_t<_com_IIID> IShellItemPtr; - bool CopyFileOrFolder(const String& src, const String& dst, unsigned op = FO_COPY) + bool CopyFileOrFolder(const String& src, const String& dst) { std::vector srcpath(src.length() + 2, 0); std::vector dstpath(dst.length() + 2, 0); memcpy(&srcpath[0], src.c_str(), src.length() * sizeof(TCHAR)); memcpy(&dstpath[0], dst.c_str(), dst.length() * sizeof(TCHAR)); - SHFILEOPSTRUCT fileop = { 0, op, &srcpath[0], &dstpath[0], FOF_NOCONFIRMATION, 0, 0, 0 }; + SHFILEOPSTRUCT fileop = { 0, FO_COPY, &srcpath[0], &dstpath[0], FOF_NOCONFIRMATION, 0, 0, 0 }; return SHFileOperation(&fileop) == 0; } @@ -146,8 +146,6 @@ namespace HRESULT GetFileItemsFromIDataObject_CF_HDROP(IDataObject *pDataObj, std::vector& files) { - FORMATETC fmtetc_preferreddropeffect = { static_cast(RegisterClipboardFormat(CFSTR_PREFERREDDROPEFFECT )), nullptr, DVASPECT_CONTENT, -1, TYMED_HGLOBAL }; - FORMATETC fmtetc_performeddropeffect = { static_cast(RegisterClipboardFormat(CFSTR_PERFORMEDDROPEFFECT )), nullptr, DVASPECT_CONTENT, -1, TYMED_HGLOBAL }; FORMATETC fmtetc_cf_hdrop = { CF_HDROP, nullptr, DVASPECT_CONTENT, -1, TYMED_HGLOBAL }; STGMEDIUM medium = { 0 }; HRESULT hr; @@ -157,35 +155,6 @@ namespace if (hDrop != nullptr) { files = FilterFiles(GetDroppedFiles(hDrop)); - - STGMEDIUM medium2 = {}; - DWORD dwDropEffect = DROPEFFECT_NONE; - if (pDataObj->GetData(&fmtetc_preferreddropeffect, &medium2) == S_OK) - { - dwDropEffect = *((DWORD *)GlobalLock(medium2.hGlobal)); - GlobalUnlock(medium2.hGlobal); - ReleaseStgMedium(&medium2); - - for (auto& file : files) - { - if (dwDropEffect == DROPEFFECT_COPY || dwDropEffect == DROPEFFECT_MOVE) - { - String tmpdir = env::GetTempChildPath(); - CopyFileOrFolder(file, tmpdir, dwDropEffect == DROPEFFECT_COPY ? FO_COPY : FO_MOVE); - file = paths::ConcatPath(tmpdir, paths::FindFileName(file)); - } - } - - STGMEDIUM medium3 = { TYMED_HGLOBAL }; - medium3.hGlobal = GlobalAlloc(GMEM_MOVEABLE | GMEM_SHARE | GMEM_DISCARDABLE, sizeof(DWORD)); - if (medium3.hGlobal != nullptr) - { - *((DWORD *)GlobalLock(medium3.hGlobal)) = dwDropEffect; - GlobalUnlock(medium3.hGlobal); - pDataObj->SetData(&fmtetc_performeddropeffect, &medium3, TRUE); - } - } - GlobalUnlock(medium.hGlobal); } ReleaseStgMedium(&medium); -- 2.11.0