diff gtk/dw.c @ 72:ab77a22a2a36

Added localization APIs as well as some miscellaneous bug fixes.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Fri, 15 Feb 2002 09:30:50 +0000
parents 9510897c0b03
children c629838d9805
line wrap: on
line diff
--- a/gtk/dw.c	Sun Feb 10 18:22:25 2002 +0000
+++ b/gtk/dw.c	Fri Feb 15 09:30:50 2002 +0000
@@ -3263,6 +3263,7 @@
 	gtk_clist_set_column_auto_resize(GTK_CLIST(clist), 0, TRUE);
 	gtk_clist_set_selection_mode(GTK_CLIST(clist), GTK_SELECTION_SINGLE);
 	gtk_container_add(GTK_CONTAINER(handle), clist);
+	gtk_object_set_data(GTK_OBJECT(clist), "multi", (gpointer)0);
 	gtk_object_set_user_data(GTK_OBJECT(handle), (gpointer)clist);
 	gtk_widget_show(clist);
 	gtk_object_set_data(GTK_OBJECT(clist), "colcount", (gpointer)count);
@@ -3348,6 +3349,18 @@
 {
 }
 
+/* Clears a CList selection and associated selection list */
+void _dw_unselect(GtkWidget *clist)
+{
+	GList *list = (GList *)gtk_object_get_data(GTK_OBJECT(clist), "selectlist");
+
+	if(list)
+		g_list_free(list);
+
+	gtk_object_set_data(GTK_OBJECT(clist), "selectlist", NULL);
+	gtk_clist_unselect_all(GTK_CLIST(clist));
+}
+
 /*
  * Allocates memory used to populate a container.
  * Parameters:
@@ -3569,7 +3582,6 @@
 void dw_container_delete(HWND handle, int rowcount)
 {
 	GtkWidget *clist;
-	GList *list;
 	int _locked_by_me = FALSE;
 
 	DW_MUTEX_LOCK;
@@ -3578,9 +3590,9 @@
 	{
 		int rows, z;
 
-		list = (GList *)gtk_object_get_data(GTK_OBJECT(clist), "selectlist");
 		rows = (int)gtk_object_get_data(GTK_OBJECT(clist), "rowcount");
-		g_list_free(list);
+
+		_dw_unselect(clist);
 
 		for(z=0;z<rowcount;z++)
 			gtk_clist_remove(GTK_CLIST(clist), 0);
@@ -3590,7 +3602,6 @@
 		else
 			rows -= rowcount;
 
-		gtk_object_set_data(GTK_OBJECT(clist), "selectlist", NULL);
 		gtk_object_set_data(GTK_OBJECT(clist), "rowcount", (gpointer)rows);
 	}
 	DW_MUTEX_UNLOCK;
@@ -3605,16 +3616,13 @@
 void dw_container_clear(HWND handle, int redraw)
 {
 	GtkWidget *clist;
-	GList *list;
 	int _locked_by_me = FALSE;
 
 	DW_MUTEX_LOCK;
 	clist = (GtkWidget*)gtk_object_get_user_data(GTK_OBJECT(handle));
 	if(clist && GTK_IS_CLIST(clist))
 	{
-		list = (GList *)gtk_object_get_data(GTK_OBJECT(clist), "selectlist");
-		g_list_free(list);
-		gtk_object_set_data(GTK_OBJECT(clist), "selectlist", NULL);
+		_dw_unselect(clist);
 		gtk_clist_clear(GTK_CLIST(clist));
 		gtk_object_set_data(GTK_OBJECT(clist), "rowcount", (gpointer)0);
 	}
@@ -3811,6 +3819,9 @@
 		{
 			gfloat pos;
 			GtkAdjustment *adj = gtk_clist_get_vadjustment(GTK_CLIST(clist));
+
+			_dw_unselect(clist);
+
 			gtk_clist_select_row(GTK_CLIST(clist), z, 0);
 
 			pos = ((adj->upper - adj->lower) * ((gfloat)z/(gfloat)rowcount)) + adj->lower;