This fixes the problem with Outlook having the wrong background. Problem was that we were filling the background even when we should not have. Only should be done on WM_ERASEBKGND (or the WM_PAINT .fErase flag). Outlook subclassed Listview and handled the erase itself. Guy Albertelli <<galberte@neo.lrun.com>> dlls/comctl32/listview.c - Eliminate extra background fills. - Eliminate bogus error messages.
Index: dlls/comctl32/listview.c =================================================================== RCS file: /home/wine/wine/dlls/comctl32/listview.c,v retrieving revision 1.154 diff -u -r1.154 listview.c --- dlls/comctl32/listview.c 27 Sep 2002 22:47:00 -0000 1.154 +++ dlls/comctl32/listview.c 29 Sep 2002 02:12:17 -0000 @@ -3017,7 +3017,6 @@ LVITEMW lvItem; LVCOLUMNW lvColumn; UINT textoutOptions = ETO_CLIPPED | ETO_OPAQUE; - RECT rcTemp; INT textLeft; INT nLabelWidth = 0; @@ -3049,16 +3048,6 @@ } } - - /* redraw the background of the item */ - rcTemp = rcItem; - if(infoPtr->nColumnCount == (nSubItem + 1)) - rcTemp.right = infoPtr->rcList.right; - else - rcTemp.right += WIDTH_PADDING; - - LISTVIEW_FillBkgnd(infoPtr, hdc, &rcTemp); - /* set item colors */ if (ListView_GetItemState(infoPtr->hwndSelf,nItem,LVIS_SELECTED) && Selected) { @@ -3142,7 +3131,6 @@ BOOL bImage = FALSE; INT iBkMode = -1; UINT textoutOptions = ETO_OPAQUE | ETO_CLIPPED; - RECT rcTemp; TRACE("(hdc=%x, nItem=%d)\n", hdc, nItem); @@ -3157,15 +3145,6 @@ LISTVIEW_GetItemW(infoPtr, &lvItem, TRUE); TRACE(" lvItem=%s\n", debuglvitem_t(&lvItem, TRUE)); - /* redraw the background of the item */ - rcTemp = rcItem; - if(infoPtr->nColumnCount == (nItem + 1)) - rcTemp.right = infoPtr->rcList.right; - else - rcTemp.right+=WIDTH_PADDING; - - LISTVIEW_FillBkgnd(infoPtr, hdc, &rcTemp); - /* do indent */ if (lvItem.iIndent>0 && infoPtr->iconSize.cx > 0) { @@ -3349,8 +3328,6 @@ TRACE("background rect (%d,%d)-(%d,%d)\n", rcFill.left, rcFill.top, rcFill.right, rcFill.bottom); - LISTVIEW_FillBkgnd(infoPtr, hdc, &rcFill); - /* Set the item to the boundary box for now */ rcItem = rcFill; TRACE("bound box for text+icon (%d,%d)-(%d,%d), iS.cx=%ld, nItemWidth=%d\n", @@ -4638,10 +4615,6 @@ nScrollPosHeight = 1; rcItem.top += infoPtr->rcList.top; } - else - { - ERR("LVS_LIST top unknown, nScrollPosWidth=%d\n", nScrollPosWidth); - } if (nScrollPosHeight) { @@ -4670,10 +4643,6 @@ nScrollPosHeight = 1; rcItem.bottom -= infoPtr->rcList.bottom; } - else /* LVS_LIST */ - { - ERR("LVS_LIST bottom unknown, nScrollPosWidth=%d\n", nScrollPosWidth); - } if (nScrollPosHeight) {