changeset 362:eb61b854fd58

Fixes for new signal handler code, for GTK 2.x tree control.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Wed, 23 Apr 2003 05:34:14 +0000
parents 8c0212f70914
children eaebef97fc4f
files gtk/dw.c
diffstat 1 files changed, 19 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/gtk/dw.c	Wed Apr 23 05:16:23 2003 +0000
+++ b/gtk/dw.c	Wed Apr 23 05:34:14 2003 +0000
@@ -515,21 +515,25 @@
 static gint _tree_select_event(GtkTreeSelection *sel, gpointer data)
 {
 	GtkWidget *item, *widget = (GtkWidget *)gtk_tree_selection_get_tree_view(sel);
-	SignalHandler work = _get_signal_handler(widget, data);
 	int retval = FALSE;
 
-	if(widget && work.window)
-	{
-		int (*treeselectfunc)(HWND, HTREEITEM, char *, void *, void *) = work.func;
-		GtkTreeIter iter;
-		char *text = NULL;
-		void *itemdata = NULL;
-          
-		if(gtk_tree_selection_get_selected(sel, NULL, &iter))
+	if(widget)
+	{
+		SignalHandler work = _get_signal_handler(widget, data);
+
+		if(work.window)
 		{
-			GtkTreeModel *store = (GtkTreeModel *)gtk_object_get_data(GTK_OBJECT(widget), "_dw_tree_store");
-			gtk_tree_model_get(store, &iter, 0, &text, 2, &itemdata, 3, &item, -1);
-			retval = treeselectfunc(work.window, (HTREEITEM)item, text, work.data, itemdata);
+			int (*treeselectfunc)(HWND, HTREEITEM, char *, void *, void *) = work.func;
+			GtkTreeIter iter;
+			char *text = NULL;
+			void *itemdata = NULL;
+
+			if(gtk_tree_selection_get_selected(sel, NULL, &iter))
+			{
+				GtkTreeModel *store = (GtkTreeModel *)gtk_object_get_data(GTK_OBJECT(widget), "_dw_tree_store");
+				gtk_tree_model_get(store, &iter, 0, &text, 2, &itemdata, 3, &item, -1);
+				retval = treeselectfunc(work.window, (HTREEITEM)item, text, work.data, itemdata);
+			}
 		}
 	}
 	return retval;
@@ -7654,11 +7658,13 @@
 	}
 	else if(GTK_IS_TREE_VIEW(thiswindow) && strcmp(signame, DW_SIGNAL_ITEM_SELECT) == 0)
 	{
+		GtkWidget *treeview = thiswindow;
+
 		thiswindow = (GtkWidget *)gtk_tree_view_get_selection(GTK_TREE_VIEW(thiswindow));
 		thisname = "changed";
     
 		g_signal_connect(G_OBJECT(thiswindow), thisname, (GCallback)thisfunc,
-						   (gpointer)_set_signal_handler(thiswindow, window, sigfunc, data));
+						   (gpointer)_set_signal_handler(treeview, window, sigfunc, data));
 		DW_MUTEX_UNLOCK;
 		return;
 	}