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