Lei Zhang : comctl32: listview: Prevent DragDetect from removing WM_LBUTTONUP messages.
Alexandre Julliard
julliard at winehq.org
Thu Sep 11 08:01:03 CDT 2008
Module: wine
Branch: master
Commit: 5f9b0db21798e863c234fdc287fa3cfaa8a3cfe1
URL: http://source.winehq.org/git/wine.git/?a=commit;h=5f9b0db21798e863c234fdc287fa3cfaa8a3cfe1
Author: Lei Zhang <thestig at google.com>
Date: Wed Sep 10 16:43:43 2008 -0700
comctl32: listview: Prevent DragDetect from removing WM_LBUTTONUP messages.
---
dlls/comctl32/listview.c | 32 ++++++++++++++++++++++----------
1 files changed, 22 insertions(+), 10 deletions(-)
diff --git a/dlls/comctl32/listview.c b/dlls/comctl32/listview.c
index 35fd131..ba53434 100644
--- a/dlls/comctl32/listview.c
+++ b/dlls/comctl32/listview.c
@@ -3321,21 +3321,33 @@ static LRESULT LISTVIEW_MouseMove(LISTVIEW_INFO *infoPtr, WORD fwKeys, INT x, IN
if (!(fwKeys & MK_LBUTTON))
infoPtr->bLButtonDown = FALSE;
- if (infoPtr->bLButtonDown && DragDetect(infoPtr->hwndSelf, infoPtr->ptClickPos))
+ if (infoPtr->bLButtonDown)
{
- LVHITTESTINFO lvHitTestInfo;
- NMLISTVIEW nmlv;
+ MSG msg;
+ BOOL skip = FALSE;
+ /* Check to see if we got a WM_LBUTTONUP, and skip the DragDetect.
+ * Otherwise, DragDetect will eat it.
+ */
+ if (PeekMessageW(&msg, 0, WM_MOUSEFIRST, WM_MOUSELAST, PM_NOREMOVE))
+ if (msg.message == WM_LBUTTONUP)
+ skip = TRUE;
+
+ if (!skip && DragDetect(infoPtr->hwndSelf, infoPtr->ptClickPos))
+ {
+ LVHITTESTINFO lvHitTestInfo;
+ NMLISTVIEW nmlv;
- lvHitTestInfo.pt = infoPtr->ptClickPos;
- LISTVIEW_HitTest(infoPtr, &lvHitTestInfo, TRUE, TRUE);
+ lvHitTestInfo.pt = infoPtr->ptClickPos;
+ LISTVIEW_HitTest(infoPtr, &lvHitTestInfo, TRUE, TRUE);
- ZeroMemory(&nmlv, sizeof(nmlv));
- nmlv.iItem = lvHitTestInfo.iItem;
- nmlv.ptAction = infoPtr->ptClickPos;
+ ZeroMemory(&nmlv, sizeof(nmlv));
+ nmlv.iItem = lvHitTestInfo.iItem;
+ nmlv.ptAction = infoPtr->ptClickPos;
- notify_listview(infoPtr, LVN_BEGINDRAG, &nmlv);
+ notify_listview(infoPtr, LVN_BEGINDRAG, &nmlv);
- return 0;
+ return 0;
+ }
}
else
infoPtr->bLButtonDown = FALSE;
More information about the wine-cvs
mailing list