Listview R2

Dimitrie O. Paun dpaun at rogers.com
Wed Oct 16 00:11:48 CDT 2002


ChangeLog
  Fix bug in edit label when sending the text to the app
  Cleanup the handling of nEditLabelItem.

--- dlls/comctl32/listview.c.R1	Tue Oct 15 21:14:12 2002
+++ dlls/comctl32/listview.c	Wed Oct 16 00:36:21 2002
@@ -3990,6 +3990,8 @@
     dispInfo.item.iSubItem = 0;
     dispInfo.item.stateMask = ~0;
     if (!LISTVIEW_GetItemW(infoPtr, &dispInfo.item)) return FALSE;
+    /* add the text from the edit in */
+    dispInfo.item.mask |= LVIF_TEXT;
     dispInfo.item.pszText = pszText;
     dispInfo.item.cchTextMax = textlenT(pszText, isW);
 
@@ -4028,6 +4030,7 @@
     TRACE("(nItem=%d, isW=%d)\n", nItem, isW);
 
     if (~infoPtr->dwStyle & LVS_EDITLABELS) return 0;
+    if (nItem < 0 || nItem >= infoPtr->nItemCount) return 0;
 
     infoPtr->nEditLabelItem = nItem;
 
@@ -7421,13 +7424,13 @@
 
   nItem = LISTVIEW_HitTest(infoPtr, &lvHitTestInfo, TRUE, TRUE);
   TRACE("at %s, nItem=%d\n", debugpoint(&pt), nItem);
+  infoPtr->nEditLabelItem = -1;
   if ((nItem >= 0) && (nItem < infoPtr->nItemCount))
   {
     if (lStyle & LVS_SINGLESEL)
     {
-      if ((LISTVIEW_GetItemState(infoPtr, nItem, LVIS_SELECTED))
-          && infoPtr->nEditLabelItem == -1)
-          infoPtr->nEditLabelItem = nItem;
+      if (LISTVIEW_GetItemState(infoPtr, nItem, LVIS_SELECTED))
+        infoPtr->nEditLabelItem = nItem;
       else
         LISTVIEW_SetSelection(infoPtr, nItem);
     }
@@ -7465,13 +7468,11 @@
       }
       else
       {
-	BOOL was_selected = LISTVIEW_GetItemState(infoPtr, nItem, LVIS_SELECTED);
+	if (LISTVIEW_GetItemState(infoPtr, nItem, LVIS_SELECTED))
+	  infoPtr->nEditLabelItem = nItem;
 
 	/* set selection (clears other pre-existing selections) */
         LISTVIEW_SetSelection(infoPtr, nItem);
-
-        if (was_selected && infoPtr->nEditLabelItem == -1)
-          infoPtr->nEditLabelItem = nItem;
       }
     }
   }
@@ -7514,13 +7515,9 @@
     /* set left button flag */
     infoPtr->bLButtonDown = FALSE;
 
-    if(infoPtr->nEditLabelItem != -1)
-    {
-        if(lvHitTestInfo.iItem == infoPtr->nEditLabelItem && 
-	   (lvHitTestInfo.flags & LVHT_ONITEMLABEL))
-            LISTVIEW_EditLabelT(infoPtr, lvHitTestInfo.iItem, TRUE);
-        infoPtr->nEditLabelItem = -1;
-    }
+    /* if we clicked on a selected item, edit the label */
+    if(lvHitTestInfo.iItem == infoPtr->nEditLabelItem && (lvHitTestInfo.flags & LVHT_ONITEMLABEL))
+        LISTVIEW_EditLabelT(infoPtr, lvHitTestInfo.iItem, TRUE);
 
     return 0;
 }




More information about the wine-patches mailing list