diff --git a/src/dialogs/settingsdialog.c b/src/dialogs/settingsdialog.c index dc74e9c..6c58f9d 100644 --- a/src/dialogs/settingsdialog.c +++ b/src/dialogs/settingsdialog.c @@ -100,22 +100,25 @@ static void V3270FTSettingsDialog_class_init(G_GNUC_UNUSED V3270FTSettingsDialog G_OBJECT_CLASS(klass)->finalize = finalize; } -void activity_selected(GtkTreeView *view, GtkTreePath *path, GtkTreeViewColumn G_GNUC_UNUSED(*column), V3270FTSettingsDialog *widget) +void activity_selected(GtkWidget G_GNUC_UNUSED(*view), GObject * activity, V3270FTSettingsDialog *widget) { - GtkTreeIter iter; - GtkTreeModel * model = gtk_tree_view_get_model(view); + debug("%s(widget=%p activity=%p",__FUNCTION__,widget,activity); - if(gtk_tree_model_get_iter(model, &iter, path)) - { - GObject * activity = NULL; - gtk_tree_model_get(model, &iter, 0, &activity, -1); - v3270_ft_settings_set_activity(widget->settings,activity); + v3270_ft_settings_set_activity(widget->settings,activity); + if(activity) + { gtk_widget_set_sensitive(widget->button.update,TRUE); gtk_widget_set_sensitive(widget->button.remove,TRUE); gtk_widget_set_sensitive(widget->button.reset,TRUE); - } + else + { + gtk_widget_set_sensitive(widget->button.update,FALSE); + gtk_widget_set_sensitive(widget->button.remove,FALSE); + gtk_widget_set_sensitive(widget->button.reset,FALSE); + } + } @@ -356,8 +359,8 @@ static void V3270FTSettingsDialog_init(V3270FTSettingsDialog *widget) { widget->queue.view = v3270_activity_list_new(); gtk_widget_set_tooltip_markup(widget->queue.view,_("Files to transfer")); - g_signal_connect(G_OBJECT(widget->queue.view),"row-activated",G_CALLBACK(activity_selected),widget); g_signal_connect(G_OBJECT(widget->queue.view),"has-file",G_CALLBACK(enable_queue_save),widget); + g_signal_connect(G_OBJECT(widget->queue.view),"changed",G_CALLBACK(activity_selected),widget); // Put the view inside a scrolled window. GtkWidget * scrolled = gtk_scrolled_window_new(NULL,NULL); diff --git a/src/filetransfer/activitylist.c b/src/filetransfer/activitylist.c index 3285db6..be0302a 100644 --- a/src/filetransfer/activitylist.c +++ b/src/filetransfer/activitylist.c @@ -36,6 +36,7 @@ enum _SIGNALS { V3270_ACTIVITY_LIST_HAS_FILE_SIGNAL, ///< @brief Indicates if the list has a file name set. + V3270_ACTIVITY_LIST_SELECTED_SIGNAL, ///< @brief Indicates if the list has a file name set. V3270_ACTIVITY_LIST_LAST_SIGNAL }; @@ -104,12 +105,36 @@ debug("%s",__FUNCTION__); } + static void row_activated(GtkTreeView *view, GtkTreePath *path, GtkTreeViewColumn G_GNUC_UNUSED(*column)) + { + debug("%s",__FUNCTION__); + + GtkTreeIter iter; + GtkTreeModel * model = gtk_tree_view_get_model(view); + + if(gtk_tree_model_get_iter(model, &iter, path)) + { + GObject * activity = NULL; + gtk_tree_model_get(model, &iter, 0, &activity, -1); + + if(activity) + { + debug("%s: activity is %p",__FUNCTION__,activity); + g_signal_emit(view, v3270_activity_list_signals[V3270_ACTIVITY_LIST_SELECTED_SIGNAL], 0, activity); + } + + } + } + static void V3270FTActivityList_class_init(V3270FTActivityListClass *klass) { - GObjectClass * gobject_class = G_OBJECT_CLASS(klass); + GObjectClass * gobject_class = G_OBJECT_CLASS(klass); + GtkTreeViewClass * treeview_class = GTK_TREE_VIEW_CLASS(klass); gobject_class->dispose = dispose; + treeview_class->row_activated = row_activated; + klass->signal.has_file = V3270FTActivityList_has_file; v3270_activity_list_signals[V3270_ACTIVITY_LIST_HAS_FILE_SIGNAL] = @@ -121,6 +146,15 @@ v3270ft_VOID__VOID_BOOLEAN, G_TYPE_NONE, 1, G_TYPE_BOOLEAN); + v3270_activity_list_signals[V3270_ACTIVITY_LIST_SELECTED_SIGNAL] = + g_signal_new( "changed", + G_OBJECT_CLASS_TYPE (gobject_class), + G_SIGNAL_RUN_FIRST, + 0, + NULL, NULL, + v3270ft_VOID__VOID_POINTER, + G_TYPE_NONE, 1, G_TYPE_POINTER); + } @@ -251,6 +285,7 @@ { debug("%s: Selecting inserted activity",__FUNCTION__); gtk_tree_selection_select_iter(gtk_tree_view_get_selection(GTK_TREE_VIEW(widget)),&iter); + g_signal_emit(widget, v3270_activity_list_signals[V3270_ACTIVITY_LIST_SELECTED_SIGNAL], 0, activity); } } diff --git a/src/filetransfer/marshal b/src/filetransfer/marshal index 1547529..abbb567 100644 --- a/src/filetransfer/marshal +++ b/src/filetransfer/marshal @@ -2,4 +2,6 @@ VOID:POINTER,POINTER VOID:VOID,BOOLEAN VOID:VOID,OBJECT VOID:UINT,POINTER +VOID:VOID,POINTER + -- libgit2 0.21.2