Listview updates

Dimitrie O. Paun dpaun at rogers.com
Tue Sep 10 00:27:44 CDT 2002


Get this out of the way before working on features...

diffstat diffs/listview.diff
 listview.c |  630 +++++++++++++++++++++----------------------------------------
 1 files changed, 222 insertions(+), 408 deletions(-)

ChangeLog
  Code cleanups and simplifications, documentation updates.

Index: dlls/comctl32/listview.c
===================================================================
RCS file: /var/cvs/wine/dlls/comctl32/listview.c,v
retrieving revision 1.139
diff -u -r1.139 listview.c
--- dlls/comctl32/listview.c	9 Sep 2002 19:22:19 -0000	1.139
+++ dlls/comctl32/listview.c	10 Sep 2002 05:08:26 -0000
@@ -85,13 +85,6 @@
 } LV_INTHIT, *LPLV_INTHIT;
 
 
-typedef struct tagEDITLABEL_ITEM
-{
-  WNDPROC EditWndProc;
-  INT nEditItem;
-  BOOL bEditLblCb;
-} EDITLABEL_ITEM;
-
 typedef struct tagLISTVIEW_SUBITEM
 {
   LPWSTR pszText;
@@ -151,9 +144,9 @@
   PFNLVCOMPARE pfnCompare;
   LPARAM lParamSort;
   HWND hwndEdit;
-  BOOL Editing;
+  BOOL bEditing;
+  WNDPROC EditWndProc;
   INT nEditLabelItem;
-  EDITLABEL_ITEM pedititem;
   DWORD dwHoverTime;
   INT nColumnCount;            /* the number of columns in this control */
 
@@ -164,6 +157,8 @@
   BOOL bIsDrawing;
 } LISTVIEW_INFO;
 
+DEFINE_COMMON_NOTIFICATIONS(LISTVIEW_INFO, hwndSelf);
+
 /*
  * constants
  */
@@ -283,7 +278,7 @@
 static LRESULT LISTVIEW_HScroll(LISTVIEW_INFO *, INT, SHORT, HWND);
 static INT LISTVIEW_GetTopIndex(LISTVIEW_INFO *);
 static BOOL LISTVIEW_EnsureVisible(LISTVIEW_INFO *, INT, BOOL);
-static HWND CreateEditLabelT(LISTVIEW_INFO *, LPCWSTR, DWORD, INT, INT, INT, INT, INT, BOOL);
+static HWND CreateEditLabelT(LISTVIEW_INFO *, LPCWSTR, DWORD, INT, INT, INT, INT, BOOL);
 
 /******** Defines that LISTVIEW_ProcessLetterKeys uses ****************/
 #define KEY_DELAY       450
@@ -384,10 +379,9 @@
 		            (WPARAM)pnmh->idFrom, (LPARAM)pnmh);
 }
 
-static inline BOOL hdr_notify(LISTVIEW_INFO *infoPtr, INT code)
+static inline void notify_itemactivate(LISTVIEW_INFO *infoPtr)
 {
-  NMHDR nmh;
-  return notify(infoPtr, code, &nmh);
+    hwnd_notify(infoPtr->hwndSelf, LVN_ITEMACTIVATE);
 }
 
 static inline BOOL listview_notify(LISTVIEW_INFO *infoPtr, INT code, LPNMLISTVIEW plvnm)
@@ -784,7 +778,7 @@
     } while (idx != endidx);
 
     if (nItem != -1) {
-        if (LISTVIEW_KeySelection(infoPtr, nItem) != FALSE) {
+        if (LISTVIEW_KeySelection(infoPtr, nItem)) {
             /* refresh client area */
             InvalidateRect(infoPtr->hwndSelf, NULL, TRUE);
             UpdateWindow(infoPtr->hwndSelf);
@@ -834,7 +828,7 @@
  * the content, size or view changes.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  *
  * RETURN:
  * None
@@ -917,7 +911,7 @@
   {
     RECT rcView;
 
-    if (LISTVIEW_GetViewRect(infoPtr, &rcView) != FALSE)
+    if (LISTVIEW_GetViewRect(infoPtr, &rcView))
     {
       INT nViewWidth = rcView.right - rcView.left;
       INT nViewHeight = rcView.bottom - rcView.top;
@@ -988,7 +982,7 @@
  * Aligns the items with the top edge of the window.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  *
  * RETURN:
  * None
@@ -1056,7 +1050,7 @@
  * Aligns the items with the left edge of the window.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  *
  * RETURN:
  * None
@@ -1121,7 +1115,7 @@
  * Set the bounding rectangle of all the items.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] LPRECT : bounding rectangle
  *
  * RETURN:
@@ -1152,7 +1146,7 @@
  * Retrieves the bounding rectangle of all the items.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [O] LPRECT : bounding rectangle
  *
  * RETURN:
@@ -1169,7 +1163,7 @@
   if (lprcView != NULL)
   {
     bResult = LISTVIEW_GetOrigin(infoPtr, &ptOrigin);
-    if (bResult != FALSE)
+    if (bResult)
     {
       lprcView->left = infoPtr->rcView.left + ptOrigin.x;
       lprcView->top = infoPtr->rcView.top + ptOrigin.y;
@@ -1222,7 +1216,7 @@
  * Calculates the width of an item.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] LONG : window style
  *
  * RETURN:
@@ -1306,7 +1300,7 @@
  * Calculates the width of a specific item.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] LPSTR : string
  *
  * RETURN:
@@ -1381,7 +1375,7 @@
  * Listview font.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  *
  */
 static VOID LISTVIEW_SaveTextMetrics(LISTVIEW_INFO *infoPtr)
@@ -1410,7 +1404,7 @@
  * Calculates the height of an item.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  *
  * RETURN:
  * Returns item height.
@@ -1487,7 +1481,7 @@
 * Adds a selection range.
 *
 * PARAMETER(S):
-* [I] HWND : window handle
+* [I] infoPtr : valid pointer to the listview structure
 * [I] INT : lower item index
 * [I] INT : upper item index
 *
@@ -1498,7 +1492,7 @@
 {
  LISTVIEW_SELECTION *selection;
  INT topSelection = infoPtr->hdpaSelectionRanges->nItemCount;
- BOOL lowerzero=FALSE;
+ BOOL lowerzero = FALSE;
 
  selection = (LISTVIEW_SELECTION *)COMCTL32_Alloc(sizeof(LISTVIEW_SELECTION));
  selection->lower = lItem;
@@ -1524,7 +1518,7 @@
                       0,0);
    selection->upper --;
    if (lowerzero)
-     lowerzero=FALSE;
+     lowerzero = FALSE;
    else
      selection->lower ++;
 
@@ -1649,7 +1643,7 @@
 * check if a specified index is selected.
 *
 * PARAMETER(S):
-* [I] HWND : window handle
+* [I] infoPtr : valid pointer to the listview structure
 * [I] INT : item index
 *
 * RETURN:
@@ -1677,7 +1671,7 @@
 * Removes all selection ranges
 *
 * Parameters(s):
-*   HWND: window handle
+* [I] infoPtr : valid pointer to the listview structure
 *
 * RETURNS:
 *   SUCCESS : TRUE
@@ -1716,7 +1710,7 @@
 * Removes a range selections.
 *
 * PARAMETER(S):
-* [I] HWND : window handle
+* [I] infoPtr : valid pointer to the listview structure
 * [I] INT : lower item index
 * [I] INT : upper item index
 *
@@ -1812,7 +1806,7 @@
 * Updates the various indices after an item has been inserted or deleted.
 *
 * PARAMETER(S):
-* [I] HWND : window handle
+* [I] infoPtr : valid pointer to the listview structure
 * [I] INT : item index
 * [I] INT : Direction of shift, +1 or -1.
 *
@@ -1879,7 +1873,7 @@
  * Adds a block of selections.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] INT : item index
  *
  * RETURN:
@@ -1912,7 +1906,7 @@
  * Adds a single selection.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] INT : item index
  *
  * RETURN:
@@ -1937,7 +1931,7 @@
  * Selects or unselects an item.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] INT : item index
  *
  * RETURN:
@@ -1975,7 +1969,7 @@
  * Selects items based on view coordinates.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] RECT : selection rectangle
  *
  * RETURN:
@@ -1994,7 +1988,7 @@
   {
     LISTVIEW_GetItemPosition(infoPtr, i, &ptItem);
 
-    if (PtInRect(&rcSelRect, ptItem) != FALSE)
+    if (PtInRect(&rcSelRect, ptItem))
       item.state = LVIS_SELECTED;
     else
       item.state = 0;
@@ -2007,7 +2001,7 @@
  * Sets a single group selection.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] INT : item index
  *
  * RETURN:
@@ -2073,7 +2067,7 @@
  * Manages the item focus.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] INT : item index
  *
  * RETURN:
@@ -2114,7 +2108,7 @@
  * Sets a single selection.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] INT : item index
  *
  * RETURN:
@@ -2143,7 +2137,7 @@
  * Set selection(s) with keyboard.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] INT : item index
  *
  * RETURN:
@@ -2194,7 +2188,7 @@
  * amount of time
  *
  * PARAMETER(S):
- * [I] infoPtr : pointer to listview strucure (not NULL)
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] fwKeys : key indicator
  * [I] pts : mouse position
  *
@@ -2223,7 +2217,7 @@
  * Called whenever WM_MOUSEMOVE is received.
  *
  * PARAMETER(S):
- * [I] infoPtr : pointer to listview strucure (not NULL)
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] fwKeys : key indicator
  * [I] pts : mouse position
  *
@@ -2261,7 +2255,7 @@
  * Selects an item based on coordinates.
  *
  * PARAMETER(S):
- * [I] infoPtr : pointer to listview strucure (not NULL)
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] pt : mouse click ccordinates
  *
  * RETURN:
@@ -2317,7 +2311,7 @@
     hdpaSubItems = (HDPA)DPA_GetPtr(hdpaItems, i);
     if (hdpaSubItems != NULL)
     {
-      if (LISTVIEW_RemoveSubItem(hdpaSubItems, nSubItem) == FALSE)
+      if (!LISTVIEW_RemoveSubItem(hdpaSubItems, nSubItem))
       {
         bResult = FALSE;
       }
@@ -2460,7 +2454,7 @@
  * Initializes item attributes.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [O] LISTVIEW_ITEM *: destination item
  * [I] LPLVITEM : source item
  * [I] isW : TRUE if lpLVItem is Unicode, FALSE if it's ANSI
@@ -2522,7 +2516,7 @@
  * tries to set the indent of a subitem.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [O] LISTVIEW_SUBITEM *: destination subitem
  * [I] LPLVITEM : source subitem
  * [I] isW : TRUE if lpLVItem is Unicode, FALSE if it's ANSI
@@ -2576,7 +2570,7 @@
  * Adds a subitem at a given position (column index).
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] LPLVITEM : new subitem atttributes
  * [I] isW : TRUE if lpLVItem is Unicode, FALSE if it's ANSI
  *
@@ -2628,7 +2622,7 @@
  * Finds the dpa insert position (array index).
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] INT : subitem index
  *
  * RETURN:
@@ -2655,7 +2649,7 @@
  * Retrieves a listview subitem at a given position (column index).
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] INT : subitem index
  *
  * RETURN:
@@ -2687,7 +2681,7 @@
  * Sets item attributes.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] LPLVITEM : new item atttributes
  * [I] isW : TRUE if lpLVItem is Unicode, FALSE if it's ANSI
  *
@@ -2867,7 +2861,7 @@
  * Sets subitem attributes.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] LPLVITEM : new subitem atttributes
  * [I] isW : TRUE if lpLVItem is Unicode, FALSE if it's ANSI
  *
@@ -2920,7 +2914,7 @@
  * Sets item attributes.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] LPLVITEM : new item atttributes
  * [I] isW : TRUE if lpLVItem is Unicode, FALSE if it's ANSI
  *
@@ -2945,7 +2939,7 @@
  * Retrieves the index of the item at coordinate (0, 0) of the client area.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  *
  * RETURN:
  * item index
@@ -2980,7 +2974,7 @@
  * Draws a subitem.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] HDC : device context handle
  * [I] INT : item index
  * [I] INT : subitem index
@@ -3102,7 +3096,7 @@
  * Draws an item.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] HDC : device context handle
  * [I] INT : item index
  * [I] RECT * : clipping rectangle
@@ -3175,7 +3169,7 @@
   /* small icons */
   if (infoPtr->himlSmall != NULL)
   {
-    if ((lvItem.state & LVIS_SELECTED) && (infoPtr->bFocus != FALSE) &&
+    if ((lvItem.state & LVIS_SELECTED) && (infoPtr->bFocus) &&
         (lvItem.iImage>=0))
     {
       ImageList_SetBkColor(infoPtr->himlSmall, CLR_NONE);
@@ -3197,10 +3191,10 @@
   }
 
   /* Don't bother painting item being edited */
-  if (infoPtr->Editing && lvItem.state & LVIS_FOCUSED && !FullSelect)
+  if (infoPtr->bEditing && lvItem.state & LVIS_FOCUSED && !FullSelect)
       return;
 
-  if ((lvItem.state & LVIS_SELECTED) && (infoPtr->bFocus != FALSE))
+  if ((lvItem.state & LVIS_SELECTED) && (infoPtr->bFocus))
   {
     /* set item colors */
     dwBkColor = SetBkColor(hdc, comctl32_color.clrHighlight);
@@ -3209,7 +3203,7 @@
     nMixMode = SetROP2(hdc, R2_XORPEN);
   }
   else if ((GetWindowLongW(infoPtr->hwndSelf, GWL_STYLE) & LVS_SHOWSELALWAYS) &&
-           (lvItem.state & LVIS_SELECTED) && (infoPtr->bFocus == FALSE))
+           (lvItem.state & LVIS_SELECTED) && (!infoPtr->bFocus))
   {
     dwBkColor = SetBkColor(hdc, comctl32_color.clr3dFace);
     dwTextColor = SetTextColor(hdc, comctl32_color.clrBtnText);
@@ -3286,7 +3280,7 @@
  * Draws an item when in large icon display mode.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] HDC : device context handle
  * [I] INT : item index
  * [I] RECT : clipping rectangle
@@ -3406,7 +3400,7 @@
   /* Draw the text below the icon */
 
   /* Don't bother painting item being edited */
-  if ((infoPtr->Editing && (lvItem.state & LVIS_FOCUSED)) ||
+  if ((infoPtr->bEditing && (lvItem.state & LVIS_FOCUSED)) ||
       !lstrlenW(lvItem.pszText))
   {
     SetRectEmpty(SuggestedFocus);
@@ -3477,7 +3471,7 @@
  * Draws listview items when in report display mode.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] HDC : device context handle
  *
  * RETURN:
@@ -3657,7 +3651,7 @@
  * Retrieves the number of items that can fit vertically in the client area.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  *
  * RETURN:
  * Number of items per row.
@@ -3686,7 +3680,7 @@
  * area.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  *
  * RETURN:
  * Number of items per column.
@@ -3716,7 +3710,7 @@
  * list display mode.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  *
  * RETURN:
  * Number of columns.
@@ -3741,7 +3735,7 @@
  * Draws listview items when in list display mode.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] HDC : device context handle
  *
  * RETURN:
@@ -3812,7 +3806,7 @@
  * Draws listview items when in icon or small icon display mode.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] HDC : device context handle
  *
  * RETURN:
@@ -3889,7 +3883,7 @@
  * Draws listview items.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] HDC : device context handle
  *
  * RETURN:
@@ -3950,7 +3944,7 @@
  * Calculates the approximate width and height of a given number of items.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] INT : number of items
  * [I] INT : width
  * [I] INT : height
@@ -4016,7 +4010,7 @@
  * Arranges listview items in icon display mode.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] INT : alignment code
  *
  * RETURN:
@@ -4058,7 +4052,7 @@
  * Removes all listview items and subitems.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  *
  * RETURN:
  *   SUCCESS : TRUE
@@ -4172,7 +4166,7 @@
  * Removes a column from the listview control.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] INT : column index
  *
  * RETURN:
@@ -4185,7 +4179,7 @@
   UINT uOwnerData = GetWindowLongW(infoPtr->hwndSelf, GWL_STYLE) & LVS_OWNERDATA;
   BOOL bResult = FALSE;
 
-  if (Header_DeleteItem(infoPtr->hwndHeader, nColumn) != FALSE)
+  if (Header_DeleteItem(infoPtr->hwndHeader, nColumn))
   {
     bResult = uOwnerData ? TRUE : LISTVIEW_RemoveColumn(infoPtr->hdpaItems, nColumn);
 
@@ -4211,7 +4205,7 @@
  * Removes an item from the listview control.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] INT : item index
  *
  * RETURN:
@@ -4315,36 +4309,18 @@
 
 /***
  * DESCRIPTION:
- * Return edit control handle of current edit label
- *
- * PARAMETER(S):
- * [I] HWND : window handle
- *
- * RETURN:
- *   SUCCESS : HWND
- *   FAILURE : 0
- */
-static LRESULT LISTVIEW_GetEditControl(LISTVIEW_INFO *infoPtr)
-{
-  return (LRESULT)infoPtr->hwndEdit;
-}
-
-
-/***
- * DESCRIPTION:
  * Callback implementation for editlabel control
  *
  * PARAMETER(S):
- * [I] HWND : window handle
- * [I] LPSTR : modified text
- * [I] DWORD : item index
+ * [I] infoPtr : valid pointer to the listview structure
+ * [I] pszText : modified text
  * [I] isW : TRUE if psxText is Unicode, FALSE if it's ANSI
  *
  * RETURN:
  *   SUCCESS : TRUE
  *   FAILURE : FALSE
  */
-static BOOL LISTVIEW_EndEditLabelT(LISTVIEW_INFO *infoPtr, LPWSTR pszText, INT nItem, BOOL isW)
+static BOOL LISTVIEW_EndEditLabelT(LISTVIEW_INFO *infoPtr, LPWSTR pszText, BOOL isW)
 {
   LONG lStyle = GetWindowLongW(infoPtr->hwndSelf, GWL_STYLE);
   NMLVDISPINFOW dispInfo;
@@ -4353,9 +4329,11 @@
   LISTVIEW_ITEM lvItemRef;
   LVITEMW item;
   BOOL bResult = TRUE;
+  INT nItem = infoPtr->nEditLabelItem;
 
   TRACE("(pszText=%s, nItem=%d, isW=%d)\n", debugstr_t(pszText, isW), nItem, isW);
 
+  infoPtr->bEditing = FALSE;
   if (!(lStyle & LVS_OWNERDATA))
   {
     if (!(hdpaSubItems = (HDPA)DPA_GetPtr(infoPtr->hdpaItems, nItem)))
@@ -4387,7 +4365,6 @@
   dispInfo.item.cchTextMax = textlenT(pszText, isW);
   dispInfo.item.iImage = lpItem->iImage;
   dispInfo.item.lParam = lpItem->lParam;
-  infoPtr->Editing = FALSE;
 
   /* Do we need to update the Item Text */
   if(dispinfo_notifyT(infoPtr, LVN_ENDLABELEDITW, &dispInfo, isW))
@@ -4402,7 +4379,7 @@
  * Begin in place editing of specified list view item
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] INT : item index
  * [I] isW : TRUE if it's a Unicode req, FALSE if ASCII
  *
@@ -4425,6 +4402,8 @@
   if (~GetWindowLongW(infoPtr->hwndSelf, GWL_STYLE) & LVS_EDITLABELS)
       return FALSE;
 
+  infoPtr->nEditLabelItem = nItem;
+
   TRACE("(nItem=%d, isW=%d)\n", nItem, isW);
 
   /* Is the EditBox still there, if so remove it */
@@ -4488,14 +4467,13 @@
 	  return 0;
 
   if (!(hedit = CreateEditLabelT(infoPtr, szDispText, WS_VISIBLE,
-		 rect.left-2, rect.top-1, 0, rect.bottom - rect.top+2,
-		 nItem, isW)))
+		 rect.left-2, rect.top-1, 0, rect.bottom - rect.top+2, isW)))
 	 return 0;
 
   infoPtr->hwndEdit = hedit;
 
   ShowWindow(infoPtr->hwndEdit,SW_NORMAL);
-  infoPtr->Editing = TRUE;
+  infoPtr->bEditing = TRUE;
   SetFocus(infoPtr->hwndEdit);
   SendMessageW(infoPtr->hwndEdit, EM_SETSEL, 0, -1);
   return infoPtr->hwndEdit;
@@ -4507,7 +4485,7 @@
  * Ensures the specified item is visible, scrolling into view if necessary.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] INT : item index
  * [I] BOOL : partially or entirely visible
  *
@@ -4531,11 +4509,11 @@
   /* ALWAYS bPartial == FALSE, FOR NOW! */
 
   rcItem.left = LVIR_BOUNDS;
-  if (LISTVIEW_GetItemRect(infoPtr, nItem, &rcItem) != FALSE)
+  if (LISTVIEW_GetItemRect(infoPtr, nItem, &rcItem))
   {
     if (rcItem.left < infoPtr->rcList.left)
     {
-      if (GetScrollInfo(infoPtr->hwndSelf, SB_HORZ, &scrollInfo) != FALSE)
+      if (GetScrollInfo(infoPtr->hwndSelf, SB_HORZ, &scrollInfo))
       {
         /* scroll left */
         bRedraw = TRUE;
@@ -4565,7 +4543,7 @@
     }
     else if (rcItem.right > infoPtr->rcList.right)
     {
-      if (GetScrollInfo(infoPtr->hwndSelf, SB_HORZ, &scrollInfo) != FALSE)
+      if (GetScrollInfo(infoPtr->hwndSelf, SB_HORZ, &scrollInfo))
       {
         /* scroll right */
 	bRedraw = TRUE;
@@ -4598,7 +4576,7 @@
     {
       /* scroll up */
       bRedraw = TRUE;
-      if (GetScrollInfo(infoPtr->hwndSelf, SB_VERT, &scrollInfo) != FALSE)
+      if (GetScrollInfo(infoPtr->hwndSelf, SB_VERT, &scrollInfo))
       {
         if (uView == LVS_REPORT)
         {
@@ -4623,7 +4601,7 @@
     {
       /* scroll down */
       bRedraw = TRUE;
-      if (GetScrollInfo(infoPtr->hwndSelf, SB_VERT, &scrollInfo) != FALSE)
+      if (GetScrollInfo(infoPtr->hwndSelf, SB_VERT, &scrollInfo))
       {
         if (uView == LVS_REPORT)
         {
@@ -4656,7 +4634,7 @@
  * Retrieves the nearest item, given a position and a direction.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] POINT : start position
  * [I] UINT : direction
  *
@@ -4674,7 +4652,7 @@
         ((vkDirection == VK_UP) ? "VK_UP" :
         ((vkDirection == VK_LEFT) ? "VK_LEFT" : "VK_RIGHT")));
 
-  if (LISTVIEW_GetViewRect(infoPtr, &rcView) != FALSE)
+  if (LISTVIEW_GetViewRect(infoPtr, &rcView))
   {
     ZeroMemory(&lvIntHit, sizeof(lvIntHit));
     LISTVIEW_GetOrigin(infoPtr, &lvIntHit.ht.pt);
@@ -4690,7 +4668,7 @@
     else if (vkDirection == VK_RIGHT)
       lvIntHit.ht.pt.x += infoPtr->nItemWidth;
 
-    if (PtInRect(&rcView, lvIntHit.ht.pt) == FALSE)
+    if (!PtInRect(&rcView, lvIntHit.ht.pt))
       return -1;
     else
     {
@@ -4761,7 +4739,7 @@
           if (nItem != -1)
           {
             /* get position of the new item index */
-            if (ListView_GetItemPosition(infoPtr->hwndSelf, nItem, &ptItem) == FALSE)
+            if (!ListView_GetItemPosition(infoPtr->hwndSelf, nItem, &ptItem))
               return -1;
           }
           else
@@ -4845,25 +4823,10 @@
 
 /***
  * DESCRIPTION:
- * Retrieves the background color of the listview control.
- *
- * PARAMETER(S):
- * [I] HWND : window handle
- *
- * RETURN:
- * COLORREF associated with the background.
- */
-static LRESULT LISTVIEW_GetBkColor(LISTVIEW_INFO *infoPtr)
-{
-  return infoPtr->clrBk;
-}
-
-/***
- * DESCRIPTION:
  * Retrieves the background image of the listview control.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [O] LPLVMKBIMAGE : background image attributes
  *
  * RETURN:
@@ -4881,7 +4844,7 @@
  * Retrieves the callback mask.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  *
  * RETURN:
  *  Value of mask
@@ -4896,7 +4859,7 @@
  * Retrieves column attributes.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] INT :  column index
  * [IO] LPLVCOLUMNW : column information
  * [I] isW : if TRUE, then lpColumn is a LPLVCOLUMNW
@@ -4941,7 +4904,7 @@
     else
       bResult = Header_GetItemA(infoPtr->hwndHeader, nItem, &hdi);
 
-    if (bResult != FALSE)
+    if (bResult)
     {
       if (lpColumn->mask & LVCF_FMT)
       {
@@ -4999,7 +4962,7 @@
  * Retrieves the column width.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] int : column index
  *
  * RETURN:
@@ -5021,7 +4984,7 @@
     /* get column width from header */
     ZeroMemory(&hdi, sizeof(hdi));
     hdi.mask = HDI_WIDTH;
-    if (Header_GetItemW(infoPtr->hwndHeader, nColumn, &hdi) != FALSE)
+    if (Header_GetItemW(infoPtr->hwndHeader, nColumn, &hdi))
       nColumnWidth = hdi.cxy;
   }
 
@@ -5035,7 +4998,7 @@
  * retrieves the total number of visible items.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  *
  * RETURN:
  * Number of fully visible items.
@@ -5065,62 +5028,13 @@
   return nItemCount;
 }
 
-/* LISTVIEW_GetEditControl */
-
-/***
- * DESCRIPTION:
- * Retrieves the extended listview style.
- *
- * PARAMETERS:
- * [I] HWND  : window handle
- *
- * RETURN:
- *   SUCCESS : previous style
- *   FAILURE : 0
- */
-static LRESULT LISTVIEW_GetExtendedListViewStyle(LISTVIEW_INFO *infoPtr)
-{
-    return infoPtr->dwExStyle;
-}
-
-/***
- * DESCRIPTION:
- * Retrieves the handle to the header control.
- *
- * PARAMETER(S):
- * [I] HWND : window handle
- *
- * RETURN:
- * Header handle.
- */
-static LRESULT LISTVIEW_GetHeader(LISTVIEW_INFO *infoPtr)
-{
-  return (LRESULT)infoPtr->hwndHeader;
-}
-
-/***
- * DESCRIPTION:
- * Returns the time that the mouse cursor must hover over an item
- * before it is selected.
- *
- * PARAMETER(S):
- * [I] HWND : window handle
- *
- * RETURN:
- *   Returns the previously set hover time or (DWORD)-1 to indicate that the
- *   hover time is set to the default hover time.
- */
-static LRESULT LISTVIEW_GetHoverTime(LISTVIEW_INFO *infoPtr)
-{
-  return infoPtr->dwHoverTime;
-}
 
 /***
  * DESCRIPTION:
  * Retrieves an image list handle.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] INT : image list identifier
  *
  * RETURN:
@@ -5345,45 +5259,13 @@
   return TRUE;
 }
 
-/***
- * DESCRIPTION:
- * Retrieves the index of the hot item.
- *
- * PARAMETERS:
- * [I] HWND  : window handle
- *
- * RETURN:
- *   SUCCESS : hot item index
- *   FAILURE : -1 (no hot item)
- */
-static LRESULT LISTVIEW_GetHotItem(LISTVIEW_INFO *infoPtr)
-{
-  return infoPtr->nHotItem;
-}
-
-/* LISTVIEW_GetHoverTime */
-
-/***
- * DESCRIPTION:
- * Retrieves the number of items in the listview control.
- *
- * PARAMETER(S):
- * [I] HWND : window handle
- *
- * RETURN:
- * Number of items.
- */
-static LRESULT LISTVIEW_GetItemCount(LISTVIEW_INFO *infoPtr)
-{
-  return GETITEMCOUNT(infoPtr);
-}
 
 /***
  * DESCRIPTION:
  * Retrieves the rectangle enclosing the item icon and text.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] INT : item index
  * [O] LPRECT : coordinate information
  *
@@ -5476,7 +5358,7 @@
  * and not the bounding box.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] INT : item index
  * [O] LPPOINT : coordinate information
  *
@@ -5577,7 +5459,7 @@
  * Retrieves the bounding rectangle for a listview control item.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] INT : item index
  * [IO] LPRECT : bounding rectangle coordinates
  *     lprc->left specifies the portion of the item for which the bounding
@@ -5641,7 +5523,7 @@
         {
           if (infoPtr->himlNormal != NULL)
           {
-            if (LISTVIEW_GetOrigin(infoPtr, &ptOrigin) != FALSE)
+            if (LISTVIEW_GetOrigin(infoPtr, &ptOrigin))
             {
               bResult = TRUE;
               lprc->left = ptItem.x + ptOrigin.x;
@@ -5654,7 +5536,7 @@
         }
         else if (uView == LVS_SMALLICON)
         {
-          if (LISTVIEW_GetOrigin(infoPtr, &ptOrigin) != FALSE)
+          if (LISTVIEW_GetOrigin(infoPtr, &ptOrigin))
           {
             bResult = TRUE;
             lprc->left = ptItem.x + ptOrigin.x;
@@ -5695,7 +5577,7 @@
         {
           if (infoPtr->himlNormal != NULL)
           {
-            if (LISTVIEW_GetOrigin(infoPtr, &ptOrigin) != FALSE)
+            if (LISTVIEW_GetOrigin(infoPtr, &ptOrigin))
             {
               bResult = TRUE;
               lprc->left = ptItem.x + ptOrigin.x;
@@ -5719,7 +5601,7 @@
         }
         else if (uView == LVS_SMALLICON)
         {
-          if (LISTVIEW_GetOrigin(infoPtr, &ptOrigin) != FALSE)
+          if (LISTVIEW_GetOrigin(infoPtr, &ptOrigin))
           {
             bResult = TRUE;
             nLeftPos = lprc->left = ptItem.x + ptOrigin.x;
@@ -5780,7 +5662,7 @@
         {
           if (infoPtr->himlNormal != NULL)
           {
-            if (LISTVIEW_GetOrigin(infoPtr, &ptOrigin) != FALSE)
+            if (LISTVIEW_GetOrigin(infoPtr, &ptOrigin))
             {
               RECT label_rect;
               INT text_left, text_right, icon_left, text_pos_x;
@@ -5829,7 +5711,7 @@
         }
         else if (uView == LVS_SMALLICON)
         {
-          if (LISTVIEW_GetOrigin(infoPtr, &ptOrigin) != FALSE)
+          if (LISTVIEW_GetOrigin(infoPtr, &ptOrigin))
           {
             bResult = TRUE;
             lprc->left = ptItem.x + ptOrigin.x;
@@ -5893,7 +5775,7 @@
         {
           if (infoPtr->himlNormal != NULL)
           {
-            if (LISTVIEW_GetOrigin(infoPtr, &ptOrigin) != FALSE)
+            if (LISTVIEW_GetOrigin(infoPtr, &ptOrigin))
             {
               bResult = TRUE;
               lprc->left = ptItem.x + ptOrigin.x;
@@ -5905,7 +5787,7 @@
         }
         else if (uView == LVS_SMALLICON)
         {
-          if (LISTVIEW_GetOrigin(infoPtr, &ptOrigin) != FALSE)
+          if (LISTVIEW_GetOrigin(infoPtr, &ptOrigin))
           {
             bResult = TRUE;
             nLeftPos= lprc->left = ptItem.x + ptOrigin.x;
@@ -6017,7 +5899,7 @@
  * Retrieves the width of a label.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  *
  * RETURN:
  *   SUCCESS : string width (in pixels)
@@ -6047,7 +5929,7 @@
  * Retrieves the spacing between listview control items.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] BOOL : flag for small or large icon
  *
  * RETURN:
@@ -6057,7 +5939,7 @@
 {
   LONG lResult;
 
-  if (bSmall == FALSE)
+  if (!bSmall)
   {
     lResult = MAKELONG(infoPtr->iconSpacing.cx, infoPtr->iconSpacing.cy);
   }
@@ -6077,7 +5959,7 @@
  * Retrieves the state of a listview control item.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] INT : item index
  * [I] UINT : state mask
  *
@@ -6139,7 +6021,7 @@
  * Searches for an item based on properties + relationships.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] INT : item index
  * [I] INT : relationship flag
  *
@@ -6288,7 +6170,7 @@
  * Retrieves the origin coordinates when in icon or small icon display mode.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [O] LPPOINT : coordinate information
  *
  * RETURN:
@@ -6313,14 +6195,14 @@
     if (lStyle & WS_HSCROLL)
     {
       scrollInfo.fMask = SIF_POS;
-      if (GetScrollInfo(infoPtr->hwndSelf, SB_HORZ, &scrollInfo) != FALSE)
+      if (GetScrollInfo(infoPtr->hwndSelf, SB_HORZ, &scrollInfo))
         lpptOrigin->x = -scrollInfo.nPos;
     }
 
     if (lStyle & WS_VSCROLL)
     {
       scrollInfo.fMask = SIF_POS;
-      if (GetScrollInfo(infoPtr->hwndSelf, SB_VERT, &scrollInfo) != FALSE)
+      if (GetScrollInfo(infoPtr->hwndSelf, SB_VERT, &scrollInfo))
         lpptOrigin->y = -scrollInfo.nPos;
     }
 
@@ -6338,7 +6220,7 @@
  * Retrieves the number of items that are marked as selected.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  *
  * RETURN:
  * Number of items selected.
@@ -6360,22 +6242,6 @@
 
 /***
  * DESCRIPTION:
- * Retrieves item index that marks the start of a multiple selection.
- *
- * PARAMETER(S):
- * [I] HWND : window handle
- *
- * RETURN:
- * Index number or -1 if there is no selection mark.
- */
-static LRESULT LISTVIEW_GetSelectionMark(LISTVIEW_INFO *infoPtr)
-{
-  return infoPtr->nSelectionMark;
-}
-
-
-/***
- * DESCRIPTION:
  * Retrieves the width of a string.
  *
  * PARAMETER(S):
@@ -6412,7 +6278,7 @@
  * Retrieves the text backgound color.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  *
  * RETURN:
  * COLORREF associated with the the background.
@@ -6427,7 +6293,7 @@
  * Retrieves the text color.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  *
  * RETURN:
  * COLORREF associated with the text.
@@ -6442,7 +6308,7 @@
  * Determines item if a hit or closest if not
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [IO] LPLV_INTHIT : hit test information
  * [I] subitem : fill out iSubItem.
  *
@@ -6554,7 +6420,7 @@
   * Determines which section of the item was selected (if any).
   *
   * PARAMETER(S):
-  * [I] HWND : window handle
+  * [I] infoPtr : valid pointer to the listview structure
   * [IO] LPLVHITTESTINFO : hit test information
   * [I] subitem : fill out iSubItem.
   *
@@ -6581,7 +6447,7 @@
  * Determines which listview item is located at the specified position.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [IO} LPLVHITTESTINFO : hit test information
  *
  * RETURN:
@@ -6620,7 +6486,7 @@
  * Determines which listview subitem is located at the specified position.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [IO} LPLVHITTESTINFO : hit test information
  *
  * RETURN:
@@ -6653,7 +6519,7 @@
  * Inserts a new column.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] INT : column index
  * [I] LPLVCOLUMNW : column information
  *
@@ -6815,7 +6681,7 @@
  * Inserts a new item in the listview control.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] LPLVITEMW : item information
  * [I] isW : TRUE if lpLVItem is Unicode, FALSE if it's ANSI
  *
@@ -6934,7 +6800,7 @@
  * Redraws a range of items.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] INT : first item
  * [I] INT : last item
  *
@@ -6972,7 +6838,7 @@
  * Scroll the content of a listview.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] INT : horizontal scroll amount in pixels
  * [I] INT : vertical scroll amount in pixels
  *
@@ -7003,7 +6869,6 @@
 static LRESULT LISTVIEW_Scroll(LISTVIEW_INFO *infoPtr, INT dx, INT dy)
 {
   LONG lStyle = GetWindowLongW(infoPtr->hwndSelf, GWL_STYLE);
-  HWND hwnd = infoPtr->hwndSelf;
   UINT uView =  lStyle & LVS_TYPEMASK;
   INT rows, mode, i;
 
@@ -7014,14 +6879,14 @@
       {
 	  mode = (dy>0) ? SB_INTERNAL_DOWN : SB_INTERNAL_UP;
 	  for ( i=0; i<rows; i++)
-	      LISTVIEW_VScroll(infoPtr, mode, 0, hwnd);
+	      LISTVIEW_VScroll(infoPtr, mode, 0, 0);
       }
 
       if (dx != 0)
       {
 	  mode = (dx>0) ? SB_INTERNAL_RIGHT : SB_INTERNAL_LEFT;
 	  for ( i=0; i<abs(dx); i++)
-	      LISTVIEW_HScroll(infoPtr, mode, 0, hwnd);
+	      LISTVIEW_HScroll(infoPtr, mode, 0, 0);
       }
       return TRUE;
   }
@@ -7031,7 +6896,7 @@
 
       mode = (dy>0) ? SB_INTERNAL_DOWN : SB_INTERNAL_UP;
       for(i=0; i<abs(dy); i++)
-	  LISTVIEW_VScroll(infoPtr, mode, 0, hwnd);
+	  LISTVIEW_VScroll(infoPtr, mode, 0, 0);
       return TRUE;
   }
   else if (uView == LVS_SMALLICON)
@@ -7040,7 +6905,7 @@
 
       mode = (dy>0) ? SB_INTERNAL_DOWN : SB_INTERNAL_UP;
       for(i=0; i<abs(dy); i++)
-	  LISTVIEW_VScroll(infoPtr, mode, 0, hwnd);
+	  LISTVIEW_VScroll(infoPtr, mode, 0, 0);
       return TRUE;
   }
   else if (uView == LVS_LIST)
@@ -7048,7 +6913,7 @@
       if (dy != 0) return FALSE;
       if (dx == 0) return TRUE;
       mode = (dx>0) ? SB_INTERNAL_RIGHT : SB_INTERNAL_LEFT;
-      LISTVIEW_HScroll(infoPtr, mode, 0, hwnd);
+      LISTVIEW_HScroll(infoPtr, mode, 0, 0);
       return TRUE;
   }
   return FALSE;
@@ -7059,7 +6924,7 @@
  * Sets the background color.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] COLORREF : background color
  *
  * RETURN:
@@ -7084,7 +6949,7 @@
  * window stores state information (some or all).
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] UINT : state mask
  *
  * RETURN:
@@ -7103,7 +6968,7 @@
  * Sets the attributes of a header item.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] INT : column index
  * [I] LPLVCOLUMNW : column attributes
  * [I] isW: if TRUE, the lpColumn is a LPLVCOLUMNW,
@@ -7205,7 +7070,7 @@
  * Sets the column order array
  *
  * PARAMETERS:
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] INT : number of elements in column order array
  * [I] INT : pointer to column order array
  *
@@ -7229,7 +7094,7 @@
  * Sets the width of a column
  *
  * PARAMETERS:
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] INT : column index
  * [I] INT : column width
  *
@@ -7398,7 +7263,7 @@
  * Sets the extended listview style.
  *
  * PARAMETERS:
- * [I] HWND  : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] DWORD : mask
  * [I] DWORD : style
  *
@@ -7424,7 +7289,7 @@
  * Sets the new hot cursor used during hot tracking and hover selection.
  *
  * PARAMETER(S):
- * [I] infoPtr : pointer to listview strucure (not NULL)
+ * [I] infoPtr : valid pointer to the listview structure
  * [I} hCurosr : the new hot cursor handle
  *
  * RETURN:
@@ -7443,7 +7308,7 @@
  * Sets the hot item index.
  *
  * PARAMETERS:
- * [I] HWND  : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] INT   : index
  *
  * RETURN:
@@ -7466,7 +7331,7 @@
  * Sets the amount of time the cursor must hover over an item before it is selected.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] DWORD : dwHoverTime, if -1 the hover time is set to the default
  *
  * RETURN:
@@ -7486,7 +7351,7 @@
  * Sets spacing for icons of LVS_ICON style.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] DWORD : MAKELONG(cx, cy)
  *
  * RETURN:
@@ -7549,7 +7414,7 @@
  * Sets image lists.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] INT : image list type
  * [I] HIMAGELIST : image list handle
  *
@@ -7605,7 +7470,7 @@
  * Preallocates memory (does *not* set the actual count of items !)
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] INT   : item count (projected number of items to allocate)
  * [I] DWORD : update flags
  *
@@ -7675,7 +7540,7 @@
  * Sets the position of an item.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] INT : item index
  * [I] LONG : x coordinate
  * [I] LONG : y coordinate
@@ -7767,7 +7632,7 @@
  * Sets the state of one or many items.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I]INT : item index
  * [I] LPLVITEM : item or subitem info
  *
@@ -7842,7 +7707,7 @@
  * Set item index that marks the start of a multiple selection.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] INT  : index
  *
  * RETURN:
@@ -7864,7 +7729,7 @@
  * Sets the text background color.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] COLORREF : text background color
  *
  * RETURN:
@@ -7886,7 +7751,7 @@
  * Sets the text foreground color.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] COLORREF : text color
  *
  * RETURN:
@@ -7936,7 +7801,7 @@
  * Sorts the listview items.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] WPARAM : application-defined value
  * [I] LPARAM : pointer to comparision callback
  *
@@ -8005,7 +7870,7 @@
  * Updates an items or rearranges the listview control.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] INT : item index
  *
  * RETURN:
@@ -8046,22 +7911,29 @@
  * Creates the listview control.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] hwnd : window handle
+ * [I] lpcs : the create parameters
  *
  * RETURN:
- * Zero
+ *   Success: 0
+ *   Failure: -1
  */
 static LRESULT LISTVIEW_Create(HWND hwnd, LPCREATESTRUCTW lpcs)
 {
-  LISTVIEW_INFO *infoPtr = (LISTVIEW_INFO *)GetWindowLongW(hwnd, 0);
+  LISTVIEW_INFO *infoPtr;
   UINT uView = lpcs->style & LVS_TYPEMASK;
   LOGFONTW logFont;
 
   TRACE("(lpcs=%p)\n", lpcs);
 
   /* initialize info pointer */
+  infoPtr = (LISTVIEW_INFO *)COMCTL32_Alloc(sizeof(LISTVIEW_INFO));
+  if (!infoPtr) return -1;
+
+  SetWindowLongW(hwnd, 0, (LONG)infoPtr);
   ZeroMemory(infoPtr, sizeof(LISTVIEW_INFO));
 
+  infoPtr->hwndSelf = hwnd;
   /* determine the type of structures to use */
   infoPtr->notifyFormat = SendMessageW(GetParent(infoPtr->hwndSelf), WM_NOTIFYFORMAT,
                                        (WPARAM)infoPtr->hwndSelf, (LPARAM)NF_QUERY);
@@ -8072,7 +7944,6 @@
   infoPtr->clrTextBk = CLR_DEFAULT;
 
   /* set default values */
-  infoPtr->hwndSelf = hwnd;
   infoPtr->uCallbackMask = 0;
   infoPtr->nFocusedItem = -1;
   infoPtr->nSelectionMark = -1;
@@ -8081,7 +7952,7 @@
   infoPtr->iconSpacing.cy = GetSystemMetrics(SM_CYICONSPACING);
   ZeroMemory(&infoPtr->rcList, sizeof(RECT));
   infoPtr->hwndEdit = 0;
-  infoPtr->Editing = FALSE;
+  infoPtr->bEditing = FALSE;
   infoPtr->nEditLabelItem = -1;
   infoPtr->bIsDrawing = FALSE;
 
@@ -8156,7 +8027,7 @@
  * Erases the background of the listview control.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] WPARAM : device context handle
  * [I] LPARAM : not used
  *
@@ -8203,27 +8074,10 @@
 
 /***
  * DESCRIPTION:
- * Retrieves the listview control font.
- *
- * PARAMETER(S):
- * [I] HWND : window handle
- *
- * RETURN:
- * Font handle.
- */
-static LRESULT LISTVIEW_GetFont(LISTVIEW_INFO *infoPtr)
-{
-  TRACE("()\n");
-
-  return infoPtr->hFont;
-}
-
-/***
- * DESCRIPTION:
  * Performs vertical scrolling.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] INT : scroll code
  * [I] SHORT : current scroll position if scroll code is SB_THUMBPOSITION
  *             or SB_THUMBTRACK.
@@ -8257,7 +8111,7 @@
 
   is_an_icon = ((uView == LVS_ICON) || (uView == LVS_SMALLICON));
 
-  if (GetScrollInfo(infoPtr->hwndSelf, SB_VERT, &scrollInfo) != FALSE)
+  if (GetScrollInfo(infoPtr->hwndSelf, SB_VERT, &scrollInfo))
   {
     INT nOldScrollPos = scrollInfo.nPos;
     switch (nScrollCode)
@@ -8353,7 +8207,7 @@
  * Performs horizontal scrolling.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] INT : scroll code
  * [I] SHORT : current scroll position if scroll code is SB_THUMBPOSITION
  *             or SB_THUMBTRACK.
@@ -8388,7 +8242,7 @@
 
   is_a_list = (uView == LVS_LIST);
 
-  if (GetScrollInfo(infoPtr->hwndSelf, SB_HORZ, &scrollInfo) != FALSE)
+  if (GetScrollInfo(infoPtr->hwndSelf, SB_HORZ, &scrollInfo))
   {
     INT nOldScrollPos = scrollInfo.nPos;
 
@@ -8495,7 +8349,7 @@
         *  listview should be scrolled by a multiple of 37 dependently on its dimension or its visible item number
         *  should be fixed in the future.
         */
-        if (GetScrollInfo(infoPtr->hwndSelf, SB_VERT, &scrollInfo) != FALSE)
+        if (GetScrollInfo(infoPtr->hwndSelf, SB_VERT, &scrollInfo))
             LISTVIEW_VScroll(infoPtr, SB_THUMBPOSITION,
 			     scrollInfo.nPos + (gcWheelDelta < 0) ?
 			     LISTVIEW_SCROLL_ICON_LINE_SIZE :
@@ -8505,7 +8359,7 @@
     case LVS_REPORT:
         if (abs(gcWheelDelta) >= WHEEL_DELTA && pulScrollLines)
         {
-            if (GetScrollInfo(infoPtr->hwndSelf, SB_VERT, &scrollInfo) != FALSE)
+            if (GetScrollInfo(infoPtr->hwndSelf, SB_VERT, &scrollInfo))
             {
                 int cLineScroll = min(LISTVIEW_GetCountPerColumn(infoPtr), pulScrollLines);
                 cLineScroll *= (gcWheelDelta / WHEEL_DELTA);
@@ -8526,7 +8380,7 @@
  * ???
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] INT : virtual key
  * [I] LONG : key data
  *
@@ -8551,8 +8405,8 @@
   case VK_RETURN:
     if ((GETITEMCOUNT(infoPtr) > 0) && (infoPtr->nFocusedItem != -1))
     {
-      hdr_notify(infoPtr, NM_RETURN);        /* NM_RETURN notification */
-      hdr_notify(infoPtr, LVN_ITEMACTIVATE); /* LVN_ITEMACTIVATE notification */
+      notify_return(infoPtr);
+      notify_itemactivate(infoPtr);
     }
     break;
 
@@ -8615,7 +8469,7 @@
  * Kills the focus.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  *
  * RETURN:
  * Zero
@@ -8628,7 +8482,7 @@
   TRACE("()\n");
 
   /* send NM_KILLFOCUS notification */
-  hdr_notify(infoPtr, NM_KILLFOCUS);
+  notify_killfocus(infoPtr);
 
   /* set window focus flag */
   infoPtr->bFocus = FALSE;
@@ -8664,7 +8518,7 @@
  * Processes double click messages (left mouse button).
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] wKey : key flag
  * [I] pts : mouse coordinate
  *
@@ -8700,7 +8554,7 @@
 
   /* To send the LVN_ITEMACTIVATE, it must be on an Item */
   if(nmlv.iItem != -1)
-    hdr_notify(infoPtr, LVN_ITEMACTIVATE);
+    notify_itemactivate(infoPtr);
 
   return 0;
 }
@@ -8710,7 +8564,7 @@
  * Processes mouse down messages (left mouse button).
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] wKey : key flag
  * [I] pts : mouse coordinate
  *
@@ -8727,10 +8581,9 @@
   TRACE("(key=%hu, X=%hu, Y=%hu)\n", wKey, pts.x, pts.y);
 
   /* send NM_RELEASEDCAPTURE notification */
-  hdr_notify(infoPtr, NM_RELEASEDCAPTURE);
+  notify_releasedcapture(infoPtr);
 
-  if (infoPtr->bFocus == FALSE)
-    SetFocus(infoPtr->hwndSelf);
+  if (!infoPtr->bFocus) SetFocus(infoPtr->hwndSelf);
 
   /* set left button down flag */
   infoPtr->bLButtonDown = TRUE;
@@ -8793,7 +8646,7 @@
  * Processes mouse up messages (left mouse button).
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] wKey : key flag
  * [I] pts : mouse coordinate
  *
@@ -8804,7 +8657,7 @@
 {
   TRACE("(key=%hu, X=%hu, Y=%hu)\n", wKey, pts.x, pts.y);
 
-  if (infoPtr->bLButtonDown != FALSE)
+  if (infoPtr->bLButtonDown)
   {
     LVHITTESTINFO lvHitTestInfo;
     NMLISTVIEW nmlv;
@@ -8845,41 +8698,10 @@
 
 /***
  * DESCRIPTION:
- * Creates the listview control (called before WM_CREATE).
- *
- * PARAMETER(S):
- * [I] HWND : window handle
- * [I] WPARAM : unhandled
- * [I] LPARAM : widow creation info
- *
- * RETURN:
- * Zero
- */
-static BOOL LISTVIEW_NCCreate(HWND hwnd, WPARAM wParam, LPARAM lParam)
-{
-  LISTVIEW_INFO *infoPtr;
-
-  TRACE("(wParam=%x, lParam=%lx)\n", wParam, lParam);
-
-  /* allocate memory for info structure */
-  infoPtr = (LISTVIEW_INFO *)COMCTL32_Alloc(sizeof(LISTVIEW_INFO));
-  if (infoPtr == NULL)
-  {
-    ERR("could not allocate info memory!\n");
-    return FALSE;
-  }
-  infoPtr->hwndSelf = hwnd;
-  SetWindowLongW(infoPtr->hwndSelf, 0, (LONG)infoPtr);
-
-  return (BOOL)DefWindowProcW(hwnd, WM_NCCREATE, wParam, lParam);
-}
-
-/***
- * DESCRIPTION:
  * Destroys the listview control (called after WM_DESTROY).
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  *
  * RETURN:
  * Zero
@@ -8937,7 +8759,7 @@
  * Handles notifications from children.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] INT : control identifier
  * [I] LPNMHDR : notification information
  *
@@ -8989,7 +8811,7 @@
  * Determines the type of structure to use.
  *
  * PARAMETER(S):
- * [I] HWND : window handle of the sender
+ * [I] infoPtr : valid pointer to the listview structureof the sender
  * [I] HWND : listview window handle
  * [I] INT : command specifying the nature of the WM_NOTIFYFORMAT
  *
@@ -9011,7 +8833,7 @@
  * Paints/Repaints the listview control.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] HDC : device context handle
  *
  * RETURN:
@@ -9042,7 +8864,7 @@
  * Processes double click messages (right mouse button).
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] wKey : key flag
  * [I] pts : mouse coordinate
  *
@@ -9054,10 +8876,10 @@
   TRACE("(key=%hu,X=%hu,Y=%hu)\n", wKey, pts.x, pts.y);
 
   /* send NM_RELEASEDCAPTURE notification */
-  hdr_notify(infoPtr, NM_RELEASEDCAPTURE);
+  notify_releasedcapture(infoPtr);
 
   /* send NM_RDBLCLK notification */
-  hdr_notify(infoPtr, NM_RDBLCLK);
+  notify_rdblclk(infoPtr);
 
   return 0;
 }
@@ -9067,7 +8889,7 @@
  * Processes mouse down messages (right mouse button).
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] wKey : key flag
  * [I] pts : mouse coordinate
  *
@@ -9084,11 +8906,10 @@
   TRACE("(key=%hu,X=%hu,Y=%hu)\n", wKey, pts.x, pts.y);
 
   /* send NM_RELEASEDCAPTURE notification */
-  hdr_notify(infoPtr, NM_RELEASEDCAPTURE);
+  notify_releasedcapture(infoPtr);
 
   /* make sure the listview control window has the focus */
-  if (infoPtr->bFocus == FALSE)
-    SetFocus(infoPtr->hwndSelf);
+  if (!infoPtr->bFocus) SetFocus(infoPtr->hwndSelf);
 
   /* set right button down flag */
   infoPtr->bRButtonDown = TRUE;
@@ -9134,7 +8955,7 @@
  * Processes mouse up messages (right mouse button).
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] wKey : key flag
  * [I] pts : mouse coordinate
  *
@@ -9169,7 +8990,7 @@
  * Sets the cursor.
  *
  * PARAMETER(S):
- * [I] infoPtr : pointer to listview strucure (not NULL)
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] hwnd : window handle of window containing the cursor
  * [I] nHittest : hit-test code
  * [I] wMouseMsg : ideintifier of the mouse message
@@ -9197,8 +9018,8 @@
  * Sets the focus.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
- * [I] HWND : window handle of previously focused window
+ * [I] infoPtr : valid pointer to the listview structure
+ * [I] infoPtr : valid pointer to the listview structureof previously focused window
  *
  * RETURN:
  * Zero
@@ -9208,7 +9029,7 @@
   TRACE("(hwndLoseFocus=%x)\n", hwndLoseFocus);
 
   /* send NM_SETFOCUS notification */
-  hdr_notify(infoPtr, NM_SETFOCUS);
+  notify_setfocus(infoPtr);
 
   /* set window focus flag */
   infoPtr->bFocus = TRUE;
@@ -9223,7 +9044,7 @@
  * Sets the font.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] HFONT : font handle
  * [I] WORD : redraw flag
  *
@@ -9249,8 +9070,7 @@
   /* invalidate listview control client area */
   InvalidateRect(infoPtr->hwndSelf, NULL, TRUE);
 
-  if (fRedraw != FALSE)
-    UpdateWindow(infoPtr->hwndSelf);
+  if (fRedraw) UpdateWindow(infoPtr->hwndSelf);
 
   return 0;
 }
@@ -9261,7 +9081,7 @@
  * For the Listview, it invalidates the entire window (the doc specifies otherwise)
  *
  * PARAMETER(S):
- * [I] HWND   : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] bRedraw: state of redraw flag
  *
  * RETURN:
@@ -9282,7 +9102,7 @@
  * messages.  At this time, the width and height are not used.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] WORD : new width
  * [I] WORD : new height
  *
@@ -9320,7 +9140,7 @@
  * Sets the size information.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  *
  * RETURN:
  * Zero if no size change
@@ -9383,7 +9203,7 @@
  * Processes WM_STYLECHANGED messages.
  *
  * PARAMETER(S):
- * [I] HWND : window handle
+ * [I] infoPtr : valid pointer to the listview structure
  * [I] WPARAM : window style type (normal or extended)
  * [I] LPSTYLESTRUCT : window style information
  *
@@ -9504,7 +9324,7 @@
      we will need to kill the control since the redraw will
      misplace the edit control.
    */
-  if (infoPtr->Editing &&
+  if (infoPtr->bEditing &&
         ((uNewView & (LVS_ICON|LVS_LIST|LVS_SMALLICON)) !=
         ((LVS_ICON|LVS_LIST|LVS_SMALLICON) & uOldView)))
   {
@@ -9524,9 +9344,9 @@
 {
   LISTVIEW_INFO *infoPtr = (LISTVIEW_INFO *)GetWindowLongW(hwnd, 0);
 
-  TRACE("( uMsg=%x wParam=%x lParam=%lx)\n", uMsg, wParam, lParam);
+  TRACE("(uMsg=%x wParam=%x lParam=%lx)\n", uMsg, wParam, lParam);
 
-  if (!infoPtr && (uMsg != WM_NCCREATE))
+  if (!infoPtr && (uMsg != WM_CREATE))
     return DefWindowProcW(hwnd, uMsg, wParam, lParam);
 
   switch (uMsg)
@@ -9568,7 +9388,7 @@
     return LISTVIEW_FindItemA(infoPtr, (INT)wParam, (LPLVFINDINFOA)lParam);
 
   case LVM_GETBKCOLOR:
-    return LISTVIEW_GetBkColor(infoPtr);
+    return infoPtr->clrBk;
 
   /* case LVM_GETBKIMAGE: */
 
@@ -9591,22 +9411,22 @@
     return LISTVIEW_GetCountPerPage(infoPtr);
 
   case LVM_GETEDITCONTROL:
-    return LISTVIEW_GetEditControl(infoPtr);
+    return (LRESULT)infoPtr->hwndEdit;
 
   case LVM_GETEXTENDEDLISTVIEWSTYLE:
-    return LISTVIEW_GetExtendedListViewStyle(infoPtr);
+    return infoPtr->dwExStyle;
 
   case LVM_GETHEADER:
-    return LISTVIEW_GetHeader(infoPtr);
+    return (LRESULT)infoPtr->hwndHeader;
 
   case LVM_GETHOTCURSOR:
     return infoPtr->hHotCursor;
 
   case LVM_GETHOTITEM:
-    return LISTVIEW_GetHotItem(infoPtr);
+    return infoPtr->nHotItem;
 
   case LVM_GETHOVERTIME:
-    return LISTVIEW_GetHoverTime(infoPtr);
+    return infoPtr->dwHoverTime;
 
   case LVM_GETIMAGELIST:
     return LISTVIEW_GetImageList(infoPtr, (INT)wParam);
@@ -9629,7 +9449,7 @@
     return LISTVIEW_GetItemT(infoPtr, (LPLVITEMW)lParam, FALSE, TRUE);
 
   case LVM_GETITEMCOUNT:
-    return LISTVIEW_GetItemCount(infoPtr);
+    return GETITEMCOUNT(infoPtr);
 
   case LVM_GETITEMPOSITION:
     return LISTVIEW_GetItemPosition(infoPtr, (INT)wParam, (LPPOINT)lParam);
@@ -9667,7 +9487,7 @@
     return LISTVIEW_GetSelectedCount(infoPtr);
 
   case LVM_GETSELECTIONMARK:
-    return LISTVIEW_GetSelectionMark(infoPtr);
+    return infoPtr->nSelectionMark;
 
   case LVM_GETSTRINGWIDTHA:
     return LISTVIEW_GetStringWidthT(infoPtr, (LPCWSTR)lParam, FALSE);
@@ -9869,7 +9689,7 @@
     return LISTVIEW_Command(infoPtr, wParam, lParam);
 
   case WM_CREATE:
-    return LISTVIEW_Create(hwnd, (LPCREATESTRUCTW)lParam); //FIXME
+    return LISTVIEW_Create(hwnd, (LPCREATESTRUCTW)lParam);
 
   case WM_ERASEBKGND:
     return LISTVIEW_EraseBackground(infoPtr, wParam, lParam);
@@ -9878,7 +9698,7 @@
     return DLGC_WANTCHARS | DLGC_WANTARROWS;
 
   case WM_GETFONT:
-    return LISTVIEW_GetFont(infoPtr);
+    return infoPtr->hFont;
 
   case WM_HSCROLL:
     if (SLOWORD(wParam) < 0) return 0; /* validate not internal codes */
@@ -9906,9 +9726,6 @@
   case WM_MOUSEHOVER:
     return LISTVIEW_MouseHover(infoPtr, (WORD)wParam, MAKEPOINTS(lParam));
 
-  case WM_NCCREATE:
-    return LISTVIEW_NCCreate(hwnd, wParam, lParam);
-
   case WM_NCDESTROY:
     return LISTVIEW_NCDestroy(infoPtr);
 
@@ -10122,8 +9939,8 @@
 
 	case WM_DESTROY:
 	{
-	    WNDPROC editProc = infoPtr->pedititem.EditWndProc;
-	    infoPtr->pedititem.EditWndProc = 0;
+	    WNDPROC editProc = infoPtr->EditWndProc;
+	    infoPtr->EditWndProc = 0;
 	    SetWindowLongW(hwnd, GWL_WNDPROC, (LONG)editProc);
 	    return CallWindowProcT(editProc, hwnd, uMsg, wParam, lParam, isW);
 	}
@@ -10138,10 +9955,10 @@
 		break;
 
 	default:
-	    return CallWindowProcT(infoPtr->pedititem.EditWndProc, hwnd, uMsg, wParam, lParam, isW);
+	    return CallWindowProcT(infoPtr->EditWndProc, hwnd, uMsg, wParam, lParam, isW);
     }
 
-    if (infoPtr->pedititem.bEditLblCb)
+    if (infoPtr->bEditing)
     {
 	LPWSTR buffer = NULL;
 
@@ -10161,11 +9978,10 @@
         /* Processing LVN_ENDLABELEDIT message could kill the focus       */
         /* eg. Using a messagebox                                         */
         bIgnoreKillFocus = TRUE;
-	LISTVIEW_EndEditLabelT(infoPtr, buffer, infoPtr->pedititem.nEditItem, isW);
+	LISTVIEW_EndEditLabelT(infoPtr, buffer, isW);
 
 	if (buffer) COMCTL32_Free(buffer);
 
-	infoPtr->pedititem.bEditLblCb = FALSE;
         bIgnoreKillFocus = FALSE;
     }
 
@@ -10208,7 +10024,7 @@
  * RETURN:
  */
 static HWND CreateEditLabelT(LISTVIEW_INFO *infoPtr, LPCWSTR text, DWORD style,
-	INT x, INT y, INT width, INT height, INT nItem, BOOL isW)
+	INT x, INT y, INT width, INT height, BOOL isW)
 {
     WCHAR editName[5] = { 'E', 'd', 'i', 't', '\0' };
     HWND hedit;
@@ -10245,9 +10061,7 @@
 
     if (!hedit) return 0;
 
-    infoPtr->pedititem.nEditItem = nItem;
-    infoPtr->pedititem.bEditLblCb = TRUE;
-    infoPtr->pedititem.EditWndProc = (WNDPROC)
+    infoPtr->EditWndProc = (WNDPROC)
 	(isW ? SetWindowLongW(hedit, GWL_WNDPROC, (LONG)EditLblWndProcW) :
                SetWindowLongA(hedit, GWL_WNDPROC, (LONG)EditLblWndProcA) );
 




More information about the wine-patches mailing list