This is O7 resent, it's actually P0. ChangeLog Use the item box rather than the bounds when invalidating Implement 'bPartial' in EnsureVisible. Index: dlls/comctl32/listview.c =================================================================== RCS file: /var/cvs/wine/dlls/comctl32/listview.c,v retrieving revision 1.222 diff -u -r1.222 listview.c --- dlls/comctl32/listview.c 11 Oct 2002 18:47:03 -0000 1.222 +++ dlls/comctl32/listview.c 11 Oct 2002 22:16:00 -0000 @@ -866,10 +866,9 @@ } #define LISTVIEW_InvalidateItem(infoPtr, nItem) do { \ - RECT rcItem; \ - rcItem.left = LVIR_BOUNDS; \ - if(LISTVIEW_GetItemRect(infoPtr, nItem, &rcItem)) \ - LISTVIEW_InvalidateRect(infoPtr, &rcItem); \ + RECT rcBox; \ + if(LISTVIEW_GetItemBox(infoPtr, nItem, &rcBox)) \ + LISTVIEW_InvalidateRect(infoPtr, &rcBox); \ } while (0) #define LISTVIEW_InvalidateList(infoPtr)\ @@ -4102,12 +4101,12 @@ INT nVertAdjust = 0; INT nHorzDiff = 0; INT nVertDiff = 0; - RECT rcItem; - - /* FIXME: ALWAYS bPartial == FALSE, FOR NOW! */ + RECT rcItem, rcTemp; rcItem.left = LVIR_BOUNDS; if (!LISTVIEW_GetItemRect(infoPtr, nItem, &rcItem)) return FALSE; + + if (bPartial && IntersectRect(&rcTemp, &infoPtr->rcList, &rcItem)) return TRUE; if (rcItem.left < infoPtr->rcList.left || rcItem.right > infoPtr->rcList.right) {