From 5f7ec4146b7f6ad8feb2dbf1cfbffdb1477ce428 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Tue, 26 Jun 2012 14:57:33 +0000 Subject: -fixes --- src/setup/gnunet-setup-gns.c | 74 +++++++++++++++++++++----------------------- 1 file changed, 35 insertions(+), 39 deletions(-) diff --git a/src/setup/gnunet-setup-gns.c b/src/setup/gnunet-setup-gns.c index f1956e27..874f145d 100644 --- a/src/setup/gnunet-setup-gns.c +++ b/src/setup/gnunet-setup-gns.c @@ -508,8 +508,8 @@ struct RemoveContext */ static void update_treemodel_after_remove (void *cls, - int32_t success, - const char *emsg) + int32_t success, + const char *emsg) { struct RemoveContext *rcc = cls; GtkTreeIter it; @@ -540,7 +540,7 @@ update_treemodel_after_remove (void *cls, * @param path */ static void -check_name_validity_and_remove (gchar *path) +check_name_validity_and_remove (const gchar *path) { GtkTreeIter it; GtkTreeIter parent; @@ -656,34 +656,47 @@ GNUNET_setup_gns_type_cellrenderercombo_changed_cb (GtkCellRendererCombo *combo, GtkTreeIter it; GtkTreeIter child; guint type; - int record_row; char *type_str; - char *value_str; + gboolean not_dummy_row; char *name_str; + char *value_str; + int is_valid; void *data; size_t data_size; - gtk_tree_model_get(GTK_TREE_MODEL(ls), new_iter, 0, &type, -1); - gtk_tree_model_get(GTK_TREE_MODEL(ls), new_iter, GNS_TYPE_TO_NAME_LISTSTORE_COLUMN_TYPENAME, &type_str, -1); - - + gtk_tree_model_get (GTK_TREE_MODEL(ls), new_iter, + GNS_TYPE_TO_NAME_LISTSTORE_COLUMN_TYPE, &type, + GNS_TYPE_TO_NAME_LISTSTORE_COLUMN_TYPENAME, &type_str, + -1); /* check if this is a new record */ gtk_tree_model_get_iter_from_string(tm, &it, path); - gtk_tree_model_get(tm, &it, GNS_TREESTORE_COL_IS_RECORD_ROW, &record_row, -1); - gtk_tree_model_get(tm, &it, GNS_TREESTORE_COL_NAME, &name_str, -1); - - if (GNUNET_YES == record_row) + gtk_tree_model_get(tm, &it, + GNS_TREESTORE_COL_NOT_DUMMY_ROW, ¬_dummy_row, + GNS_TREESTORE_COL_NAME, &name_str, + GNS_TREESTORE_COL_VAL_AS_STR, &value_str, + -1); + is_valid = GNUNET_NO; + if ( (NULL != value_str) && + (GNUNET_OK == GNUNET_NAMESTORE_string_to_value (type, + value_str, + &data, + &data_size)) ) + { + is_valid = GNUNET_YES; + GNUNET_free_non_null (data); + } + if (not_dummy_row) { /* Updating an existing record */ gtk_tree_store_set(ts, &it, GNS_TREESTORE_COL_RECORD_TYPE, type, GNS_TREESTORE_COL_RECORD_TYPE_AS_STR, type_str, + GNS_TREESTORE_COL_VAL_COLOR, (GNUNET_NO == is_valid) ? "red" : NULL, -1); } else if ((NULL != name_str) && (0 != strcmp (NEW_NAME_STR, name_str))) { /* Adding a new record */ - gtk_tree_store_insert_with_values(ts, &child , &it, 0, GNS_TREESTORE_COL_NAME, name_str, GNS_TREESTORE_COL_NAME_IS_VISIBLE, FALSE, @@ -694,36 +707,19 @@ GNUNET_setup_gns_type_cellrenderercombo_changed_cb (GtkCellRendererCombo *combo, GNS_TREESTORE_COL_EXP_TIME_IS_REL, FALSE, GNS_TREESTORE_COL_IS_RECORD_ROW, TRUE, GNS_TREESTORE_COL_NOT_DUMMY_ROW, TRUE, - -1); + GNS_TREESTORE_COL_VAL_COLOR, "red", + -1); gtk_tree_view_expand_row (tv, gtk_tree_model_get_path(tm, &it), 0); - } - GNUNET_free (type_str); - - /* check if value is still valid */ - gtk_tree_model_get(tm, &it, GNS_TREESTORE_COL_VAL_AS_STR, &value_str, -1); - if (NULL != value_str) - { - if (GNUNET_OK != GNUNET_NAMESTORE_string_to_value (type, - value_str, - &data, - &data_size)) - gtk_tree_store_set (ts, &it, GNS_TREESTORE_COL_VAL_COLOR, "red", -1); - else - gtk_tree_store_set (ts, &it, GNS_TREESTORE_COL_VAL_COLOR, NULL, -1); - GNUNET_free (value_str); - } - else if (NULL == value_str) + else { - /* Empty value field */ - if (GNUNET_YES == record_row) - gtk_tree_store_set (ts, &it, GNS_TREESTORE_COL_VAL_COLOR, "red", -1); - else - gtk_tree_store_set (ts, &child, GNS_TREESTORE_COL_VAL_COLOR, "red", -1); + /* type should not have been editable! */ + GNUNET_break (0); } - - check_name_validity_and_commit (path, NULL); + GNUNET_free (type_str); + GNUNET_free (value_str); GNUNET_free_non_null (name_str); + check_name_validity_and_commit (path, NULL); } -- cgit v1.2.3