[evolution-data-server] Bug #605432 - Renaming source allows entering same name
- From: Milan Crha <mcrha src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [evolution-data-server] Bug #605432 - Renaming source allows entering same name
- Date: Thu, 7 Jan 2010 18:59:29 +0000 (UTC)
commit f9c8e0f93df1918844ac04b264351133f29985ee
Author: Milan Crha <mcrha redhat com>
Date: Thu Jan 7 19:58:50 2010 +0100
Bug #605432 - Renaming source allows entering same name
libedataserverui/e-source-selector.c | 40 +++++++++++++++++++++++++++++++++-
1 files changed, 39 insertions(+), 1 deletions(-)
---
diff --git a/libedataserverui/e-source-selector.c b/libedataserverui/e-source-selector.c
index e7789fd..f19b34b 100644
--- a/libedataserverui/e-source-selector.c
+++ b/libedataserverui/e-source-selector.c
@@ -432,6 +432,44 @@ rebuild_model (ESourceSelector *selector)
free_rebuild_data (rebuild_data);
}
+static gboolean
+same_source_name_exists (ESourceSelector *selector, const gchar *name)
+{
+ GtkTreeModel *model;
+ GtkTreeIter parent_iter, source_iter;
+
+ g_return_val_if_fail (selector != NULL, FALSE);
+ g_return_val_if_fail (E_IS_SOURCE_SELECTOR (selector), FALSE);
+ g_return_val_if_fail (name != NULL, FALSE);
+
+ model = GTK_TREE_MODEL (selector->priv->tree_store);
+
+ if (gtk_tree_model_get_iter_first (model, &parent_iter)) {
+ do {
+ if (gtk_tree_model_iter_children (model, &source_iter, &parent_iter)) {
+ do {
+ gpointer data;
+ const gchar *source_name;
+
+ gtk_tree_model_get (model, &source_iter, 0, &data, -1);
+ g_assert (E_IS_SOURCE (data));
+
+ source_name = e_source_peek_name (E_SOURCE (data));
+ if (source_name && g_str_equal (name, source_name)) {
+ g_object_unref (data);
+
+ return TRUE;
+ }
+
+ g_object_unref (data);
+ } while (gtk_tree_model_iter_next (model, &source_iter));
+ }
+ } while (gtk_tree_model_iter_next (model, &parent_iter));
+ }
+
+ return FALSE;
+}
+
static gint
on_idle_rebuild_model_callback (ESourceSelector *selector)
{
@@ -627,7 +665,7 @@ text_cell_edited_cb (ESourceSelector *selector,
g_return_if_fail (E_IS_SOURCE (source));
- if (new_name != NULL && *new_name != '\0')
+ if (new_name != NULL && *new_name != '\0' && !same_source_name_exists (selector, new_name))
e_source_set_name (source, new_name);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]