Module: wine Branch: master Commit: 5f9b0db21798e863c234fdc287fa3cfaa8a3cfe1 URL: http://source.winehq.org/git/wine.git/?a=commit;h=5f9b0db21798e863c234fdc287...
Author: Lei Zhang thestig@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;