Listview R5

Dimitrie O. Paun dpaun at rogers.com
Wed Oct 16 07:56:10 CDT 2002


ChangeLog
  Remember the global colors in custom draw mode.

--- dlls/comctl32/listview.c.R4	Wed Oct 16 08:45:38 2002
+++ dlls/comctl32/listview.c	Wed Oct 16 08:53:38 2002
@@ -3471,7 +3471,7 @@
 static void LISTVIEW_Refresh(LISTVIEW_INFO *infoPtr, HDC hdc)
 {
     UINT uView = infoPtr->dwStyle & LVS_TYPEMASK;
-    COLORREF oldTextColor;
+    COLORREF oldTextColor, oldClrTextBk, oldClrText;
     NMLVCUSTOMDRAW nmlvcd;
     HFONT hOldFont;
     DWORD cdmode;
@@ -3487,12 +3487,19 @@
     oldBkMode = GetBkMode(hdc);
     infoPtr->clrTextBkDefault = GetBkColor(hdc);
     oldTextColor = GetTextColor(hdc);
+
+    oldClrTextBk = infoPtr->clrTextBk;
+    oldClrText   = infoPtr->clrText;
    
     GetClientRect(infoPtr->hwndSelf, &rcClient);
     customdraw_fill(&nmlvcd, infoPtr, hdc, &rcClient, NULL);
     cdmode = notify_customdraw(infoPtr, CDDS_PREPAINT, &nmlvcd);
     if (cdmode & CDRF_SKIPDEFAULT) goto enddraw;
 
+    /* Use these colors to draw the items */
+    infoPtr->clrTextBk = nmlvcd.clrTextBk;
+    infoPtr->clrText = nmlvcd.clrText;
+
     /* nothing to draw */
     if(infoPtr->nItemCount == 0) goto enddraw;
 
@@ -3514,7 +3521,9 @@
     if (cdmode & CDRF_NOTIFYPOSTPAINT)
 	notify_customdraw(infoPtr, CDDS_POSTPAINT, &nmlvcd);
 
-    /* unselect objects */
+    infoPtr->clrTextBk = oldClrTextBk;
+    infoPtr->clrText = oldClrText;
+
     SelectObject(hdc, hOldFont);
     SetBkMode(hdc, oldBkMode);
     SetBkColor(hdc, infoPtr->clrTextBkDefault);




More information about the wine-patches mailing list