The LVS_LIST mode was broken. This fixes it. ChangeLog Fix braino in calculation of LVS_LIST origin. Invalidate the entire window when we are invalidating the list. Index: dlls/comctl32/listview.c =================================================================== RCS file: /var/cvs/wine/dlls/comctl32/listview.c,v retrieving revision 1.187 diff -u -r1.187 listview.c --- dlls/comctl32/listview.c 8 Oct 2002 01:55:32 -0000 1.187 +++ dlls/comctl32/listview.c 8 Oct 2002 04:00:28 -0000 @@ -734,7 +734,7 @@ } while (0) #define LISTVIEW_InvalidateList(infoPtr)\ - LISTVIEW_InvalidateRect(infoPtr, &infoPtr->rcList) + LISTVIEW_InvalidateRect(infoPtr, NULL) static inline BOOL LISTVIEW_GetItemW(LISTVIEW_INFO *infoPtr, LPLVITEMW lpLVItem) { @@ -5511,19 +5511,14 @@ lpptOrigin->x = infoPtr->rcList.left; lpptOrigin->y = infoPtr->rcList.top; if (uView == LVS_LIST) - { - nHorzPos *= LISTVIEW_GetCountPerColumn(infoPtr); - nVertPos = 0; - } + nHorzPos *= infoPtr->nItemWidth; else if (uView == LVS_REPORT) - { nVertPos *= infoPtr->nItemHeight; - } lpptOrigin->x -= nHorzPos; lpptOrigin->y -= nVertPos; - TRACE("(pt=(%ld,%ld))\n", lpptOrigin->x, lpptOrigin->y); + TRACE(" origin=%s\n", debugpoint(lpptOrigin)); return TRUE; }