From c558a5ee937d50332885003c87a1b8c8520a412a Mon Sep 17 00:00:00 2001 From: Sjoerd Simons Date: Sun, 13 Sep 2009 15:34:55 +0100 Subject: Ensure we don't add the same contact twice at the top-level --- libempathy-gtk/empathy-contact-list-store.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'libempathy-gtk/empathy-contact-list-store.c') diff --git a/libempathy-gtk/empathy-contact-list-store.c b/libempathy-gtk/empathy-contact-list-store.c index ea386e14a..5edcded95 100644 --- a/libempathy-gtk/empathy-contact-list-store.c +++ b/libempathy-gtk/empathy-contact-list-store.c @@ -878,6 +878,24 @@ contact_list_store_add_contact (EmpathyContactListStore *store, } /* If no groups just add it at the top level. */ if (!groups) { + GtkTreeIter iter; + GtkTreeModel *model = GTK_TREE_MODEL (store); + + if (gtk_tree_model_get_iter_first (model, &iter)) do { + EmpathyContact *c; + + gtk_tree_model_get (model, &iter, + EMPATHY_CONTACT_LIST_STORE_COL_CONTACT, &c, + -1); + + if (c == contact) { + g_object_unref (c); + return; + } + if (c != NULL) + g_object_unref (c); + } while (gtk_tree_model_iter_next (model, &iter)); + gtk_tree_store_append (GTK_TREE_STORE (store), &iter, NULL); gtk_tree_store_set (GTK_TREE_STORE (store), &iter, EMPATHY_CONTACT_LIST_STORE_COL_NAME, empathy_contact_get_name (contact), -- cgit v1.2.3