comparison gtk/dw.c @ 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 aa827971da39
comparison
equal deleted inserted replaced
361:8c0212f70914 362:eb61b854fd58
513 513
514 #if GTK_MAJOR_VERSION > 1 514 #if GTK_MAJOR_VERSION > 1
515 static gint _tree_select_event(GtkTreeSelection *sel, gpointer data) 515 static gint _tree_select_event(GtkTreeSelection *sel, gpointer data)
516 { 516 {
517 GtkWidget *item, *widget = (GtkWidget *)gtk_tree_selection_get_tree_view(sel); 517 GtkWidget *item, *widget = (GtkWidget *)gtk_tree_selection_get_tree_view(sel);
518 SignalHandler work = _get_signal_handler(widget, data);
519 int retval = FALSE; 518 int retval = FALSE;
520 519
521 if(widget && work.window) 520 if(widget)
522 { 521 {
523 int (*treeselectfunc)(HWND, HTREEITEM, char *, void *, void *) = work.func; 522 SignalHandler work = _get_signal_handler(widget, data);
524 GtkTreeIter iter; 523
525 char *text = NULL; 524 if(work.window)
526 void *itemdata = NULL; 525 {
527 526 int (*treeselectfunc)(HWND, HTREEITEM, char *, void *, void *) = work.func;
528 if(gtk_tree_selection_get_selected(sel, NULL, &iter)) 527 GtkTreeIter iter;
529 { 528 char *text = NULL;
530 GtkTreeModel *store = (GtkTreeModel *)gtk_object_get_data(GTK_OBJECT(widget), "_dw_tree_store"); 529 void *itemdata = NULL;
531 gtk_tree_model_get(store, &iter, 0, &text, 2, &itemdata, 3, &item, -1); 530
532 retval = treeselectfunc(work.window, (HTREEITEM)item, text, work.data, itemdata); 531 if(gtk_tree_selection_get_selected(sel, NULL, &iter))
532 {
533 GtkTreeModel *store = (GtkTreeModel *)gtk_object_get_data(GTK_OBJECT(widget), "_dw_tree_store");
534 gtk_tree_model_get(store, &iter, 0, &text, 2, &itemdata, 3, &item, -1);
535 retval = treeselectfunc(work.window, (HTREEITEM)item, text, work.data, itemdata);
536 }
533 } 537 }
534 } 538 }
535 return retval; 539 return retval;
536 } 540 }
537 #else 541 #else
7652 DW_MUTEX_UNLOCK; 7656 DW_MUTEX_UNLOCK;
7653 return; 7657 return;
7654 } 7658 }
7655 else if(GTK_IS_TREE_VIEW(thiswindow) && strcmp(signame, DW_SIGNAL_ITEM_SELECT) == 0) 7659 else if(GTK_IS_TREE_VIEW(thiswindow) && strcmp(signame, DW_SIGNAL_ITEM_SELECT) == 0)
7656 { 7660 {
7661 GtkWidget *treeview = thiswindow;
7662
7657 thiswindow = (GtkWidget *)gtk_tree_view_get_selection(GTK_TREE_VIEW(thiswindow)); 7663 thiswindow = (GtkWidget *)gtk_tree_view_get_selection(GTK_TREE_VIEW(thiswindow));
7658 thisname = "changed"; 7664 thisname = "changed";
7659 7665
7660 g_signal_connect(G_OBJECT(thiswindow), thisname, (GCallback)thisfunc, 7666 g_signal_connect(G_OBJECT(thiswindow), thisname, (GCallback)thisfunc,
7661 (gpointer)_set_signal_handler(thiswindow, window, sigfunc, data)); 7667 (gpointer)_set_signal_handler(treeview, window, sigfunc, data));
7662 DW_MUTEX_UNLOCK; 7668 DW_MUTEX_UNLOCK;
7663 return; 7669 return;
7664 } 7670 }
7665 #else 7671 #else
7666 else if(GTK_IS_TREE(thiswindow) && strcmp(signame, DW_SIGNAL_ITEM_CONTEXT) == 0) 7672 else if(GTK_IS_TREE(thiswindow) && strcmp(signame, DW_SIGNAL_ITEM_CONTEXT) == 0)