Index: uppsrc\CtrlCore\CtrlCore.h ========================================================= --- uppsrc\CtrlCore\CtrlCore.h Tue Oct 04 10:15:05 2016 +++ uppsrc\CtrlCore\CtrlCore.h Thu Oct 20 09:54:39 2016 @@ -1183,6 +1183,11 @@ void SetSelectionSource(const char *fmts); + // FDP::2016-10-20 Not yet implemented for non-windows systems + int DoDragAndDrop(const char *fmts, + const Image& imgNo, const Image& imgCopy, const Image& imgMove, + dword actions, + const VectorMap& data); int DoDragAndDrop(const char *fmts, const Image& sample, dword actions, const VectorMap& data); int DoDragAndDrop(const char *fmts, const Image& sample = Null, dword actions = DND_ALL); Index: uppsrc\CtrlCore\Win32Dnd.cpp ========================================================= --- uppsrc\CtrlCore\Win32Dnd.cpp Fri Aug 26 19:15:30 2016 +++ uppsrc\CtrlCore\Win32Dnd.cpp Thu Oct 20 09:52:12 2016 @@ -485,6 +485,15 @@ int Ctrl::DoDragAndDrop(const char *fmts, const Image& sample, dword actions, const VectorMap& data) { + return DoDragAndDrop(fmts, sample, sample, sample, actions, data); +} + +int Ctrl::DoDragAndDrop(const char *fmts, + const Image& imgNo, const Image& imgCopy, const Image& imgMove, + dword actions, + const VectorMap& data) + +{ UDataObject *obj = new UDataObject; obj->data <<= data; if(fmts) { @@ -495,11 +504,11 @@ UDropSource *dsrc = new UDropSource; DWORD result = 0; Image m = Ctrl::OverrideCursor(CtrlCoreImg::DndMove()); - dsrc->no = MakeDragImage(CtrlCoreImg::DndNone(), CtrlCoreImg::DndNone98(), sample); + dsrc->no = actions & DND_EXACTIMAGE ? imgNo : MakeDragImage(CtrlCoreImg::DndNone(), CtrlCoreImg::DndNone98(), imgNo); if(actions & DND_COPY) - dsrc->copy = actions & DND_EXACTIMAGE ? sample : MakeDragImage(CtrlCoreImg::DndCopy(), CtrlCoreImg::DndCopy98(), sample); + dsrc->copy = actions & DND_EXACTIMAGE ? imgCopy : MakeDragImage(CtrlCoreImg::DndCopy(), CtrlCoreImg::DndCopy98(), imgCopy); if(actions & DND_MOVE) - dsrc->move = actions & DND_EXACTIMAGE ? sample : MakeDragImage(CtrlCoreImg::DndMove(), CtrlCoreImg::DndMove98(), sample); + dsrc->move = actions & DND_EXACTIMAGE ? imgMove : MakeDragImage(CtrlCoreImg::DndMove(), CtrlCoreImg::DndMove98(), imgMove); sDnDSource = this; int level = LeaveGuiMutexAll(); HRESULT r = DoDragDrop(obj, dsrc,