Listview Z9

Dimitrie O. Paun dpaun at rogers.com
Sun Oct 27 11:29:59 CST 2002


ChangeLog
  Properly fill lParam in NMLISTVIEW.

--- dlls/comctl32/listview.c.Z8	2002-10-27 11:53:58.000000000 -0500
+++ dlls/comctl32/listview.c	2002-10-27 12:27:47.000000000 -0500
@@ -720,15 +720,34 @@
 static LRESULT notify_click(LISTVIEW_INFO *infoPtr,  INT code, LVHITTESTINFO *lvht)
 {
     NMLISTVIEW nmlv;
+    LVITEMW item;
    
     TRACE("code=%d, lvht=%s\n", code, debuglvhittestinfo(lvht)); 
     ZeroMemory(&nmlv, sizeof(nmlv));
     nmlv.iItem = lvht->iItem;
     nmlv.iSubItem = lvht->iSubItem;
     nmlv.ptAction = lvht->pt;
+    item.mask = LVIF_PARAM;
+    item.iItem = lvht->iItem;
+    item.iSubItem = 0;
+    if (LISTVIEW_GetItemT(infoPtr, &item, TRUE)) nmlv.lParam = item.lParam;
     return notify_listview(infoPtr, code, &nmlv);
 }
 
+static void notify_deleteitem(LISTVIEW_INFO *infoPtr, INT nItem)
+{
+    NMLISTVIEW nmlv;
+    LVITEMW item;
+   
+    ZeroMemory(&nmlv, sizeof (NMLISTVIEW));
+    nmlv.iItem = nItem;
+    item.mask = LVIF_PARAM;
+    item.iItem = nItem;
+    item.iSubItem = 0;
+    if (LISTVIEW_GetItemT(infoPtr, &item, TRUE)) nmlv.lParam = item.lParam;
+    notify_listview(infoPtr, LVN_DELETEITEM, &nmlv);
+}
+
 static int get_ansi_notification(INT unicodeNotificationCode)
 {
     switch (unicodeNotificationCode)
@@ -3901,11 +3920,7 @@
     for (i = infoPtr->nItemCount - 1; i >= 0; i--)
     {
         /* send LVN_DELETEITEM notification, if not supressed */
-	if (!bSuppress)
-	{
-	    nmlv.iItem = i;
-	    notify_listview(infoPtr, LVN_DELETEITEM, &nmlv);
-	}
+	if (!bSuppress) notify_deleteitem(infoPtr, i);
 	if (!(infoPtr->dwStyle & LVS_OWNERDATA))
 	{
 	    hdpaSubItems = (HDPA)DPA_GetPtr(infoPtr->hdpaItems, i);
@@ -4147,7 +4162,6 @@
 static BOOL LISTVIEW_DeleteItem(LISTVIEW_INFO *infoPtr, INT nItem)
 {
     UINT uView = infoPtr->dwStyle & LVS_TYPEMASK;
-    NMLISTVIEW nmlv;
     LVITEMW item;
 
     TRACE("(nItem=%d)\n", nItem);
@@ -4160,9 +4174,7 @@
     LISTVIEW_SetItemState(infoPtr, nItem, &item);
 	    
     /* send LVN_DELETEITEM notification. */
-    ZeroMemory(&nmlv, sizeof (NMLISTVIEW));
-    nmlv.iItem = nItem;
-    notify_listview(infoPtr, LVN_DELETEITEM, &nmlv);
+    notify_deleteitem(infoPtr, nItem);
 
     /* we need to do this here, because we'll be deleting stuff */  
     if (uView == LVS_SMALLICON || uView == LVS_ICON)


-- 
Dimi.




More information about the wine-patches mailing list