diff --git a/source/libublsettings-gtk3.c b/source/libublsettings-gtk3.c index adc26ee..56aa994 100644 --- a/source/libublsettings-gtk3.c +++ b/source/libublsettings-gtk3.c @@ -699,6 +699,22 @@ int yon_gtk_list_store_find_text(GtkListStore *list, GtkTreeIter *iter, int seek } return 0; } +void yon_on_cell_renderer_toggle_toggled_for_list_store(GtkWidget *self, gchar *path,GtkWidget *tree){ + GtkTreePath *path_converted = gtk_tree_path_new_from_string(path); + GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(tree)); + GtkTreeIter iter; + gtk_tree_model_get_iter(model,&iter,path_converted); + int last = yon_char_find_last(path,':'); + char *col = path+last+1; + int status; + gtk_tree_model_get(model,&iter,atoi(col),&status,-1); + gtk_list_store_set(GTK_LIST_STORE(model),&iter,atoi(col),!status,-1); +} + +void yon_cell_renderer_toggle_set_toggle(GtkCellRendererToggle *target,GtkWidget *tree){ + g_return_if_fail(GTK_IS_CELL_RENDERER_TOGGLE(target)); + g_signal_connect(G_OBJECT(target),"toggled",G_CALLBACK(yon_on_cell_renderer_toggle_toggled_for_list_store),tree); +} void yon_gtk_toggle_button_set_inactive_from_toggle(GtkToggleButton *self, GtkToggleButton *target){ if (gtk_toggle_button_get_active(self)){ diff --git a/source/libublsettings-gtk3.h b/source/libublsettings-gtk3.h index e15ad98..7c1f9c9 100644 --- a/source/libublsettings-gtk3.h +++ b/source/libublsettings-gtk3.h @@ -252,6 +252,8 @@ int yon_dictionary_gtk_pack_end_multiple_widgets(GtkBox *destination, gboolean e int yon_gtk_list_store_find_text(GtkListStore *list, GtkTreeIter *iter, int seek_column, char *value); +void yon_cell_renderer_toggle_set_toggle(GtkCellRendererToggle *target,GtkWidget *tree); + void yon_gtk_toggle_button_set_inactive_from_toggle(GtkToggleButton *self, GtkToggleButton *target); void yon_gtk_toggle_button_set_inactive_from_entry(GtkEntry *self, GtkToggleButton *target);