Mercurial > dwindows
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;