Nikolay Sivov : comctl32/listview: LVM_GETVIEWRECT is unsupported on LVS_REPORT style.

Alexandre Julliard julliard at winehq.org
Tue May 26 09:24:54 CDT 2009


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

Author: Nikolay Sivov <bunglehead at gmail.com>
Date:   Tue May 26 02:25:05 2009 +0400

comctl32/listview: LVM_GETVIEWRECT is unsupported on LVS_REPORT style.

---

 dlls/comctl32/listview.c       |   18 +++++++++---------
 dlls/comctl32/tests/listview.c |    2 --
 2 files changed, 9 insertions(+), 11 deletions(-)

diff --git a/dlls/comctl32/listview.c b/dlls/comctl32/listview.c
index 129f3cb..f9b4983 100644
--- a/dlls/comctl32/listview.c
+++ b/dlls/comctl32/listview.c
@@ -2372,6 +2372,7 @@ static BOOL LISTVIEW_Arrange(LISTVIEW_INFO *infoPtr, INT nAlignCode)
 /***
  * DESCRIPTION:
  * Retrieves the bounding rectangle of all the items, not offset by Origin.
+ * For LVS_REPORT always returns empty rectangle.
  *
  * PARAMETER(S):
  * [I] infoPtr : valid pointer to the listview structure
@@ -2412,11 +2413,6 @@ static void LISTVIEW_GetAreaRect(const LISTVIEW_INFO *infoPtr, LPRECT lprcView)
 	lprcView->right = x * infoPtr->nItemWidth;
 	lprcView->bottom = y * infoPtr->nItemHeight;
 	break;
-	
-    case LVS_REPORT:	    
-    	lprcView->right = infoPtr->nItemWidth;
-	lprcView->bottom = infoPtr->nItemCount * infoPtr->nItemHeight;
-	break;
     }
 }
 
@@ -2439,10 +2435,14 @@ static BOOL LISTVIEW_GetViewRect(const LISTVIEW_INFO *infoPtr, LPRECT lprcView)
     TRACE("(lprcView=%p)\n", lprcView);
 
     if (!lprcView) return FALSE;
- 
-    LISTVIEW_GetOrigin(infoPtr, &ptOrigin);
-    LISTVIEW_GetAreaRect(infoPtr, lprcView); 
-    OffsetRect(lprcView, ptOrigin.x, ptOrigin.y); 
+
+    LISTVIEW_GetAreaRect(infoPtr, lprcView);
+
+    if ((infoPtr->dwStyle & LVS_TYPEMASK) != LVS_REPORT)
+    {
+        LISTVIEW_GetOrigin(infoPtr, &ptOrigin);
+        OffsetRect(lprcView, ptOrigin.x, ptOrigin.y);
+    }
 
     TRACE("lprcView=%s\n", wine_dbgstr_rect(lprcView));
 
diff --git a/dlls/comctl32/tests/listview.c b/dlls/comctl32/tests/listview.c
index 39224da..13d8fde 100644
--- a/dlls/comctl32/tests/listview.c
+++ b/dlls/comctl32/tests/listview.c
@@ -2475,11 +2475,9 @@ static void test_getviewrect(void)
     r = SendMessage(hwnd, LVM_GETVIEWRECT, 0, (LPARAM)&rect);
     expect(TRUE, r);
     /* left is set to (2e31-1) - XP SP2 */
-todo_wine {
     expect(0, rect.right);
     expect(0, rect.top);
     expect(0, rect.bottom);
-}
 
     /* switch to LVS_ICON */
     SetWindowLong(hwnd, GWL_STYLE, GetWindowLong(hwnd, GWL_STYLE) & ~LVS_REPORT);




More information about the wine-cvs mailing list