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