]> git.0d.be Git - empathy.git/commitdiff
Ensure we don't add the same contact twice at the top-level
authorSjoerd Simons <sjoerd.simons@collabora.co.uk>
Sun, 13 Sep 2009 14:34:55 +0000 (15:34 +0100)
committerSjoerd Simons <sjoerd.simons@collabora.co.uk>
Sun, 13 Sep 2009 16:45:01 +0000 (17:45 +0100)
libempathy-gtk/empathy-contact-list-store.c

index ea386e14aee5be8359172d563bca68bd0e8a6c0b..5edcded95f06b95edf867ea91fb04a60234513c9 100644 (file)
@@ -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),