Listview Z5

Dimitrie O. Paun dpaun at rogers.com
Fri Oct 25 13:46:36 CDT 2002


This should fix Rein's update problems.

Silly me, I was coding to the specifications... :/

ChangeLog
  Despite what the docs say, we have to invalidate the
  list on WM_SETREDRAW(TRUE).

--- dlls/comctl32/listview.c.Z4	2002-10-25 11:24:19.000000000 -0400
+++ dlls/comctl32/listview.c	2002-10-25 14:44:15.000000000 -0400
@@ -1209,7 +1209,7 @@
     return infoPtr->bRedraw && !infoPtr->bFirstPaint;
 }
 
-static inline void LISTVIEW_InvalidateRect(LISTVIEW_INFO *infoPtr, const RECT*rect)
+static inline void LISTVIEW_InvalidateRect(LISTVIEW_INFO *infoPtr, const RECT* rect)
 {
     if(!is_redrawing(infoPtr)) return; 
     TRACE(" invalidating rect=%s\n", debugrect(rect));
@@ -8031,6 +8031,11 @@
  */
 static LRESULT LISTVIEW_SetRedraw(LISTVIEW_INFO *infoPtr, BOOL bRedraw)
 {
+    TRACE("infoPtr->bRedraw=%d, bRedraw=%d\n", infoPtr->bRedraw, bRedraw);
+
+    /* we can not use straight equality here because _any_ non-zero value is TRUE */
+    if ((infoPtr->bRedraw && bRedraw) || (!infoPtr->bRedraw && !bRedraw)) return 0;
+
     infoPtr->bRedraw = bRedraw;
 
     if(!bRedraw) return 0;
@@ -8039,6 +8044,10 @@
 	LISTVIEW_Arrange(infoPtr, LVA_DEFAULT);
     LISTVIEW_UpdateScroll(infoPtr);
 
+    /* despite what the WM_SETREDRAW docs says, apps expect us
+     * to invalidate the listview here... stupid! */
+    LISTVIEW_InvalidateList(infoPtr);
+
     return 0;
 }
 


-- 
Dimi.




More information about the wine-patches mailing list