Make clear what remains to be done, in the header. This way, anyone can get a good picture of the state of things, within a few minutes. I find this sort of summary *absolutely* fundamental for the advancement of the code (especially for large, and complicated components such as the listview). I hope more people, with detailed area knowledge, will document in other headers what they know: what's not working, what remains to be done, ideas, etc. ChangeLog Collect all bugs, missing features, etc in the header doc Minor cleanups. --- dlls/comctl32/listview.c.W2 Mon Oct 21 22:40:05 2002 +++ dlls/comctl32/listview.c Mon Oct 21 22:57:06 2002 @@ -31,14 +31,32 @@ * If you discover missing features, or bugs, please note them below. * * TODO: - * -- Hot item handling. + * + * Features + * -- Hot item handling, mouse hovering + * -- Workareas support + * -- Tilemode support + * -- Groups support + * + * Bugs * -- Expand large item in ICON mode when the cursor is flying over the icon or text. - * -- Support CustonDraw options for _WIN32_IE >= 0x560 (see NMLVCUSTOMDRAW docs) - * -- work areas - * -- tilemode - * -- groups - * -- FIXMEs (search for them) + * -- Support CustonDraw options for _WIN32_IE >= 0x560 (see NMLVCUSTOMDRAW docs. + * -- in LISTVIEW_AddGroupSelection, se whould send LVN_ODSTATECHANGED * -- LVA_SNAPTOGRID not implemented + * -- LISTVIEW_ApproximateViewRect partially implemented + * -- LISTVIEW_[GS]etColumnOrderArray stubs + * -- LISTVIEW_GetNextItem is very inefficient + * -- LISTVIEW_SetColumnWidth ignores header images & bitmap + * -- LISTVIEW_SetIconSpacing is incomplete + * -- LVSICF_NOINVALIDATEALL, LVSICF_NOSCROLL not implemented + * -- LISTVIEW_SortItems is broken + * -- LISTVIEW_StyleChanged doesn't handle some changes too well + * + * Speedups + * -- LISTVIEW_SetItemCount is too invalidation happy + * -- we should keep an ordered array of coordinates in iconic mode + * this would allow to frame items (iterator_frameditems), + * and find nearest item (LVFI_NEARESTXY) a lot more efficiently * * States * -- LVIS_ACTIVATING (not currently supported by comctl32.dll version 6.0) @@ -1904,21 +1922,6 @@ /*** * DESCRIPTION: - * Resets the current position to the origin. - * - * PARAMETER(S): - * [I] infoPtr : valid pointer to the listview structure - * - * RETURN: - * None - */ -static inline void LISTVIEW_ResetCurrentPosition(LISTVIEW_INFO *infoPtr) -{ - infoPtr->currIconPos.x = infoPtr->currIconPos.y = 0; -} - -/*** - * DESCRIPTION: * Returns the current icon position, and advances it along the top. * The returned position is not offset by Origin. * @@ -2056,7 +2059,7 @@ default: return FALSE; } - LISTVIEW_ResetCurrentPosition(infoPtr); + infoPtr->currIconPos.x = infoPtr->currIconPos.y = 0; for (i = 0; i < infoPtr->nItemCount; i++) { next_pos(infoPtr, &pos); @@ -2905,7 +2908,7 @@ * * PARAMETER(S): * [I] infoPtr : valid pointer to the listview structure - * [I] INT : item index + * [I] nItem : item index * * RETURN: * SUCCESS : TRUE (needs to be repainted) @@ -4398,7 +4401,6 @@ POINT Origin; RECT rcArea; - FIXME("LVFI_NEARESTXY is slow.\n"); LISTVIEW_GetOrigin(infoPtr, &Origin); Destination.x = lpFindInfo->pt.x - Origin.x; Destination.y = lpFindInfo->pt.y - Origin.y; @@ -5286,9 +5288,6 @@ * [I] nItem : item index * [I] uFlags : relationship flag * - * FIXME: - * This function is very, very inefficient! Needs work. - * * RETURN: * SUCCESS : item index * FAILURE : -1