[PATCH] If no effect action selected use ::DragLeave() instead of ::Drop()
Nikolay Sivov
nsivov at codeweavers.com
Sun May 2 03:56:47 CDT 2010
---
dlls/ole32/ole2.c | 20 +++++++++++---------
1 files changed, 11 insertions(+), 9 deletions(-)
diff --git a/dlls/ole32/ole2.c b/dlls/ole32/ole2.c
index b20be1d..2e4da53 100644
--- a/dlls/ole32/ole2.c
+++ b/dlls/ole32/ole2.c
@@ -2196,7 +2196,7 @@ static void OLEDD_TrackStateChange(TrackerWindowInfo* trackerInfo)
* If we end-up over a target, drop the object in the target or
* inform the target that the operation was cancelled.
*/
- if (trackerInfo->curDragTarget!=0)
+ if (trackerInfo->curDragTarget)
{
switch (trackerInfo->returnValue)
{
@@ -2205,14 +2205,16 @@ static void OLEDD_TrackStateChange(TrackerWindowInfo* trackerInfo)
* the drop target that we just dropped the object in it.
*/
case DRAGDROP_S_DROP:
- {
- IDropTarget_Drop(trackerInfo->curDragTarget,
- trackerInfo->dataObject,
- trackerInfo->dwKeyState,
- trackerInfo->curMousePos,
- trackerInfo->pdwEffect);
- break;
- }
+ if (*trackerInfo->pdwEffect != DROPEFFECT_NONE)
+ IDropTarget_Drop(trackerInfo->curDragTarget,
+ trackerInfo->dataObject,
+ trackerInfo->dwKeyState,
+ trackerInfo->curMousePos,
+ trackerInfo->pdwEffect);
+ else
+ IDropTarget_DragLeave(trackerInfo->curDragTarget);
+ break;
+
/*
* If the source told us that we should cancel, fool the drop
* target by telling it that the mouse left it's window.
--
1.5.6.5
--=-OSnCKgoBalTPnR6H34zy--
More information about the wine-patches
mailing list