MCPcopy Create free account
hub / github.com/WinMerge/winmerge / Drop

Method Drop

Src/DropHandler.cpp:345–367  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

343}
344
345HRESULT DropHandler::Drop(IDataObject* pDataObj, DWORD grfKeyState, POINTL pt, DWORD* pdwEffect)
346{
347 bool ok = false;
348 CWaitCursor waitstatus;
349 std::vector<String> files;
350 FORMATETC fmtetc_cf_hdrop = { CF_HDROP, nullptr, DVASPECT_CONTENT, -1, TYMED_HGLOBAL };
351 FORMATETC fmtetc_shellidlist = { static_cast<WORD>(RegisterClipboardFormat(CFSTR_SHELLIDLIST)), nullptr, DVASPECT_CONTENT, -1, TYMED_HGLOBAL };
352 FORMATETC fmtetc_filedescriptor = { static_cast<WORD>(RegisterClipboardFormat(CFSTR_FILEDESCRIPTOR)), nullptr, DVASPECT_CONTENT, -1, TYMED_HGLOBAL };
353 if (pDataObj->QueryGetData(&fmtetc_cf_hdrop) == S_OK &&
354 GetFileItemsFromIDataObject_CF_HDROP(pDataObj, files) == S_OK && files.size() > 0)
355 ok = true;
356 else if (pDataObj->QueryGetData(&fmtetc_shellidlist) == S_OK &&
357 GetFileItemsFromIDataObject_ShellIDList(pDataObj, files) == S_OK && files.size() > 0)
358 ok = true;
359 else if (pDataObj->QueryGetData(&fmtetc_filedescriptor) == S_OK &&
360 GetFileItemsFromIDataObject_FileDescriptor(pDataObj, files) == S_OK && files.size() > 0)
361 ok = true;
362 if (files.size() > 3)
363 files.resize(3);
364 if (!files.empty())
365 m_callback(files);
366 return ok ? S_OK : E_FAIL;
367}

Callers 1

OnDropMethod · 0.80

Calls 6

sizeMethod · 0.45
resizeMethod · 0.45
emptyMethod · 0.45

Tested by

no test coverage detected