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