Nikolay Sivov : ole32/ole2: After IDropTarget::DragEnter() failure target doesn't count as valid.
Alexandre Julliard
julliard at winehq.org
Mon May 3 11:54:06 CDT 2010
Module: wine
Branch: master
Commit: 9c44ed8a6bc713d89f88ab20130b807db20639a7
URL: http://source.winehq.org/git/wine.git/?a=commit;h=9c44ed8a6bc713d89f88ab20130b807db20639a7
Author: Nikolay Sivov <nsivov at codeweavers.com>
Date: Sun May 2 12:49:37 2010 +0400
ole32/ole2: After IDropTarget::DragEnter() failure target doesn't count as valid.
---
dlls/ole32/ole2.c | 20 ++++++++++++++------
1 files changed, 14 insertions(+), 6 deletions(-)
diff --git a/dlls/ole32/ole2.c b/dlls/ole32/ole2.c
index e21f0ac..b20be1d 100644
--- a/dlls/ole32/ole2.c
+++ b/dlls/ole32/ole2.c
@@ -2081,13 +2081,21 @@ static void OLEDD_TrackMouseMove(TrackerWindowInfo* trackerInfo)
/*
* If there is, notify it that we just dragged-in
*/
- if (trackerInfo->curDragTarget!=0)
+ if (trackerInfo->curDragTarget)
{
- IDropTarget_DragEnter(trackerInfo->curDragTarget,
- trackerInfo->dataObject,
- trackerInfo->dwKeyState,
- trackerInfo->curMousePos,
- trackerInfo->pdwEffect);
+ hr = IDropTarget_DragEnter(trackerInfo->curDragTarget,
+ trackerInfo->dataObject,
+ trackerInfo->dwKeyState,
+ trackerInfo->curMousePos,
+ trackerInfo->pdwEffect);
+
+ /* failed DragEnter() means invalid target */
+ if (hr != S_OK)
+ {
+ trackerInfo->curDragTargetHWND = 0;
+ trackerInfo->curTargetHWND = 0;
+ trackerInfo->curDragTarget = 0;
+ }
}
}
else
More information about the wine-cvs
mailing list