Listview W3

Dimitrie O. Paun dpaun at rogers.com
Mon Oct 21 22:01:58 CDT 2002


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




More information about the wine-patches mailing list