changeset 573:314abd650968

Fix for incorrect indexes on subsequent container inserts on windows.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Wed, 09 Feb 2005 17:53:26 +0000
parents 1e3ab8adba90
children 70c8a30c254f
files win/dw.c
diffstat 1 files changed, 9 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/win/dw.c	Tue Jul 20 07:37:56 2004 +0000
+++ b/win/dw.c	Wed Feb 09 17:53:26 2005 +0000
@@ -6607,7 +6607,7 @@
 void * API dw_container_alloc(HWND handle, int rowcount)
 {
 	LV_ITEM lvi;
-	int z;
+	int z, item;
 
 	lvi.mask = LVIF_DI_SETITEM | LVIF_TEXT | LVIF_IMAGE;
 	lvi.iSubItem = 0;
@@ -6618,8 +6618,10 @@
 	lvi.iImage = -1;
 
 	ShowWindow(handle, SW_HIDE);
-	for(z=0;z<rowcount;z++)
+	item = ListView_InsertItem(handle, &lvi);
+	for(z=1;z<rowcount;z++)
 		ListView_InsertItem(handle, &lvi);
+	dw_window_set_data(handle, "_dw_insertitem", (void *)item);
 	return (void *)handle;
 }
 
@@ -6729,6 +6731,7 @@
 	ULONG *flags;
 	LV_ITEM lvi;
 	char textbuffer[100], *destptr = textbuffer;
+	int item = (int)dw_window_get_data(handle, "_dw_insertitem");
 
 	if(!cinfo || !cinfo->flags || !data)
 		return;
@@ -6736,7 +6739,7 @@
 	flags = cinfo->flags;
 
 	lvi.mask = LVIF_DI_SETITEM | LVIF_TEXT;
-	lvi.iItem = row;
+	lvi.iItem = row + item;
 	lvi.iSubItem = column;
 
 	if(flags[column] & DW_CFA_BITMAPORICON)
@@ -6907,8 +6910,9 @@
 {
 	LV_ITEM lvi;
 	HWND container = (HWND)pointer;
-
-	lvi.iItem = row;
+	int item = (int)dw_window_get_data(container, "_dw_insertitem");
+
+	lvi.iItem = row + item;
 	lvi.iSubItem = 0;
 	lvi.mask = LVIF_PARAM;
 	lvi.lParam = (LPARAM)title;