Listview X12

Dimitrie O. Paun dpaun at rogers.com
Thu Oct 24 18:20:07 CDT 2002


This fixes Rein's update problems in Newsbin Pro.

Alexandre, I'll be away for 3h, you can commit 
the X-series at will.

ChangeLog
  Do not invalidate list on WM_SETREDRAW
  Update size info even if redrawing is disabled
  Trivial cleanups, and some tracing.

--- dlls/comctl32/listview.c.X11	Thu Oct 24 14:35:55 2002
+++ dlls/comctl32/listview.c	Thu Oct 24 19:16:06 2002
@@ -1476,8 +1476,7 @@
     UINT uView = infoPtr->dwStyle & LVS_TYPEMASK;
     SCROLLINFO horzInfo, vertInfo;
 
-    if (infoPtr->dwStyle & LVS_NOSCROLL) return;
-    if (!is_redrawing(infoPtr)) return;
+    if ((infoPtr->dwStyle & LVS_NOSCROLL) || !is_redrawing(infoPtr)) return;
 
     ZeroMemory(&horzInfo, sizeof(SCROLLINFO));
     horzInfo.cbSize = sizeof(SCROLLINFO);
@@ -4102,9 +4101,13 @@
     rcScroll.right = rcScroll.left + infoPtr->nItemWidth;
     rcScroll.bottom = nPerCol * infoPtr->nItemHeight;
     OffsetRect(&rcScroll, Origin.x, Origin.y);
+    TRACE("rcScroll=%s, dx=%d\n", debugrect(&rcScroll), dir * infoPtr->nItemHeight);
     if (IntersectRect(&rcScroll, &rcScroll, &infoPtr->rcList))
+    {
+	TRACE("Scrolling rcScroll=%s, rcList=%s\n", debugrect(&rcScroll), debugrect(&infoPtr->rcList));
 	ScrollWindowEx(infoPtr->hwndSelf, 0, dir * infoPtr->nItemHeight, 
 		       &rcScroll, &rcScroll, 0, 0, SW_ERASE | SW_INVALIDATE);
+    }
 
     /* report has only that column, so we're done */
     if (uView == LVS_REPORT) return;
@@ -7739,7 +7742,6 @@
 	UINT uView =  infoPtr->dwStyle & LVS_TYPEMASK;
 	
 	infoPtr->bFirstPaint = FALSE;
-	LISTVIEW_UpdateSize(infoPtr);
 	LISTVIEW_UpdateItemSize(infoPtr);
 	if (uView == LVS_ICON || uView == LVS_SMALLICON)
 	    LISTVIEW_Arrange(infoPtr, LVA_DEFAULT);
@@ -7989,17 +7991,13 @@
  */
 static LRESULT LISTVIEW_SetRedraw(LISTVIEW_INFO *infoPtr, BOOL bRedraw)
 {
-    UINT uView =  infoPtr->dwStyle & LVS_TYPEMASK;
-    
     infoPtr->bRedraw = bRedraw;
 
     if(!bRedraw) return 0;
     
-    LISTVIEW_UpdateSize(infoPtr);
-    if (uView == LVS_ICON || uView == LVS_SMALLICON)
+    if (is_autoarrange(infoPtr))
 	LISTVIEW_Arrange(infoPtr, LVA_DEFAULT);
     LISTVIEW_UpdateScroll(infoPtr);
-    LISTVIEW_InvalidateList(infoPtr);
 
     return 0;
 }
@@ -8021,10 +8019,11 @@
 {
     TRACE("(width=%d, height=%d)\n", Width, Height);
 
+    if (!LISTVIEW_UpdateSize(infoPtr)) return 0;
+  
+    /* do not bother with display related stuff if we're not redrawing */ 
     if (!is_redrawing(infoPtr)) return 0;
     
-    if (!LISTVIEW_UpdateSize(infoPtr)) return 0;
-   
     if (is_autoarrange(infoPtr)) 
 	LISTVIEW_Arrange(infoPtr, LVA_DEFAULT);
 


-- 
Dimi.




More information about the wine-patches mailing list