changeset 115:2d121d4d90c0

Run the _item_select_event() handler on comboboxes even if a handler wasn't requested... so we can keep our internal item up to date.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Wed, 09 Oct 2002 19:31:11 +0000
parents 39932767ef46
children bb039d7407f0
files gtk/dw.c
diffstat 1 files changed, 9 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/gtk/dw.c	Wed Oct 09 04:32:52 2002 +0000
+++ b/gtk/dw.c	Wed Oct 09 19:31:11 2002 +0000
@@ -344,7 +344,8 @@
 				if(!gtk_object_get_data(GTK_OBJECT(work->window), "appending"))
 				{
 					gtk_object_set_data(GTK_OBJECT(work->window), "item", (gpointer)item);
-					selectfunc(work->window, item, work->data);
+					if(selectfunc)
+						selectfunc(work->window, item, work->data);
 				}
 				break;
 			}
@@ -2010,6 +2011,7 @@
 HWND dw_combobox_new(char *text, unsigned long id)
 {
 	GtkWidget *tmp;
+	SignalHandler *work = malloc(sizeof(SignalHandler));
 	int _locked_by_me = FALSE;
 
 	DW_MUTEX_LOCK;
@@ -2019,6 +2021,12 @@
 	gtk_object_set_user_data(GTK_OBJECT(tmp), NULL);
 	gtk_widget_show(tmp);
 	gtk_object_set_data(GTK_OBJECT(tmp), "id", (gpointer)id);
+
+	work->window = tmp;
+	work->func = NULL;
+	work->data = NULL;
+
+	gtk_signal_connect(GTK_OBJECT(GTK_COMBO(tmp)->list), "select_child", GTK_SIGNAL_FUNC(_item_select_event), work);
 	DW_MUTEX_UNLOCK;
 	return tmp;
 }