listview: fix selection handling
Dimitrie O. Paun
dpaun at rogers.com
Wed Sep 3 21:10:56 CDT 2003
ChangeLog
Adjust selection ranges before we insert the item
so we don't mix the new selection with the existing
ones (reported by Eric Pouech).
Index: dlls/comctl32/listview.c
===================================================================
RCS file: /var/cvs/wine/dlls/comctl32/listview.c,v
retrieving revision 1.360
diff -u -r1.360 listview.c
--- dlls/comctl32/listview.c 1 Sep 2003 23:55:33 -0000 1.360
+++ dlls/comctl32/listview.c 3 Sep 2003 15:32:36 -0000
@@ -5939,6 +5939,9 @@
if (nItem == -1) goto fail;
infoPtr->nItemCount++;
+ /* shift indices first so they don't get tangled */
+ LISTVIEW_ShiftIndices(infoPtr, nItem, 1);
+
/* set the item attributes */
if (lpLVItem->mask & (LVIF_GROUPID|LVIF_COLUMNS))
{
@@ -5979,11 +5982,6 @@
}
}
- /* Add the subitem list to the items array. Do this last in case we go to
- * fail during the above.
- */
- LISTVIEW_ShiftIndices(infoPtr, nItem, 1);
-
/* send LVN_INSERTITEM notification */
ZeroMemory(&nmlv, sizeof(NMLISTVIEW));
nmlv.iItem = nItem;
@@ -6008,6 +6006,7 @@
return nItem;
undo:
+ LISTVIEW_ShiftIndices(infoPtr, nItem, -1);
DPA_DeletePtr(infoPtr->hdpaItems, nItem);
infoPtr->nItemCount--;
fail:
--
Dimi.
More information about the wine-patches
mailing list