summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/zenity-tree-column-view.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/zenity-tree-column-view.c b/src/zenity-tree-column-view.c
index d4d4e2c..9b4b5a6 100644
--- a/src/zenity-tree-column-view.c
+++ b/src/zenity-tree-column-view.c
@@ -336,6 +336,36 @@ zenity_tree_column_view_emit_activated (ZenityTreeColumnView *self)
g_signal_emit (self, zenity_tree_column_view_signals[ACTIVATED], 0);
}
+static void
+cv_check_or_radio_activated_cb (ZenityTreeColumnView *self, guint position, GtkColumnView *cv)
+{
+ GListModel *model = zenity_tree_column_view_get_model (self);
+ ZenityTreeRow *row = g_list_model_get_item (model, position);
+ ZenityTreeItem *item = zenity_tree_row_get_item (row, 0);
+ GtkWidget *item_child = zenity_tree_item_get_child (item);
+ GtkCheckButton *cb;
+
+ if (! GTK_IS_CHECK_BUTTON (item_child))
+ return;
+
+ cb = GTK_CHECK_BUTTON(item_child);
+
+ switch (self->list_type)
+ {
+ case ZENITY_TREE_LIST_CHECK:
+ gtk_check_button_set_active (cb, !gtk_check_button_get_active (cb));
+ break;
+
+ case ZENITY_TREE_LIST_RADIO:
+ gtk_check_button_set_active (cb, TRUE);
+ break;
+
+ default:
+ g_warning ("%s: Programmer error: invalid list type.", __func__);
+ break;
+ }
+}
+
void
zenity_tree_column_view_set_list_type (ZenityTreeColumnView *self, ZenityTreeListType type)
{
@@ -347,10 +377,18 @@ zenity_tree_column_view_set_list_type (ZenityTreeColumnView *self, ZenityTreeLis
{
case ZENITY_TREE_LIST_NONE:
case ZENITY_TREE_LIST_IMAGE:
+ gtk_column_view_set_single_click_activate (self->child_cv, FALSE);
g_signal_connect_swapped (self->child_cv, "activate", G_CALLBACK(zenity_tree_column_view_emit_activated), self);
break;
+ case ZENITY_TREE_LIST_RADIO:
+ case ZENITY_TREE_LIST_CHECK:
+ gtk_column_view_set_single_click_activate (self->child_cv, TRUE);
+ g_signal_connect_swapped (self->child_cv, "activate", G_CALLBACK(cv_check_or_radio_activated_cb), self);
+ break;
+
default:
+ g_warning ("%s: Invalid ZenityTreeListType provided.", __func__);
break;
}