Nikolay Sivov : comctl32/listview: Fix some hittest problems on LVS_EX_FULLROWSELECT.

Alexandre Julliard julliard at winehq.org
Mon Jun 15 07:59:12 CDT 2009


Module: wine
Branch: master
Commit: 89f0bdff6e96a82adfa06c8b57c4abcea7ba327a
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=89f0bdff6e96a82adfa06c8b57c4abcea7ba327a

Author: Nikolay Sivov <bunglehead at gmail.com>
Date:   Sun Jun 14 20:40:42 2009 +0400

comctl32/listview: Fix some hittest problems on LVS_EX_FULLROWSELECT.

---

 dlls/comctl32/listview.c |    8 +++++++-
 1 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/dlls/comctl32/listview.c b/dlls/comctl32/listview.c
index 2599abd..835f251 100644
--- a/dlls/comctl32/listview.c
+++ b/dlls/comctl32/listview.c
@@ -6643,6 +6643,8 @@ static INT LISTVIEW_HitTest(const LISTVIEW_INFO *infoPtr, LPLVHITTESTINFO lpht,
 	/* for top/bottom only */
 	bounds.left = LVIR_BOUNDS;
 	LISTVIEW_GetItemRect(infoPtr, iItem, &bounds);
+	opt.x = lpht->pt.x - Origin.x;
+	opt.y = lpht->pt.y;
 
 	for (j = 0; j < DPA_GetPtrCount(infoPtr->hdpaColumns); j++)
 	{
@@ -6650,7 +6652,7 @@ static INT LISTVIEW_HitTest(const LISTVIEW_INFO *infoPtr, LPLVHITTESTINFO lpht,
 	    bounds.left  = pRect->left;
 	    bounds.right = pRect->right;
 
-	    if (PtInRect(&bounds, lpht->pt))
+	    if (PtInRect(&bounds, opt))
 	    {
 		lpht->iSubItem = j;
 		break;
@@ -6676,7 +6678,11 @@ static INT LISTVIEW_HitTest(const LISTVIEW_INFO *infoPtr, LPLVHITTESTINFO lpht,
     opt.y = lpht->pt.y - Position.y - Origin.y;
     
     if (infoPtr->uView == LV_VIEW_DETAILS)
+    {
 	rcBounds = rcBox;
+	if (infoPtr->dwLvExStyle & LVS_EX_FULLROWSELECT)
+	    opt.x = lpht->pt.x - Origin.x;
+    }
     else
     {
         UnionRect(&rcBounds, &rcIcon, &rcLabel);




More information about the wine-cvs mailing list