From 30ca4c1d57a39507b9dc50b892236fe06411bdbc Mon Sep 17 00:00:00 2001 From: Georges Basile Stavracas Neto Date: Wed, 8 Apr 2015 00:01:58 -0300 Subject: [PATCH] source-dialog: only add the source when it's not present --- src/gcal-source-dialog.c | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/src/gcal-source-dialog.c b/src/gcal-source-dialog.c index 6c0a2c33..7dca8fda 100644 --- a/src/gcal-source-dialog.c +++ b/src/gcal-source-dialog.c @@ -148,12 +148,29 @@ add_source (GcalManager *manager, gpointer user_data) { GcalSourceDialogPrivate *priv = GCAL_SOURCE_DIALOG (user_data)->priv; - GtkWidget *row; + GList *children, *l; + gboolean contains_source; - row = make_row_from_source (GCAL_SOURCE_DIALOG (user_data), source); - g_object_set_data (G_OBJECT (row), "source", source); + children = gtk_container_get_children (GTK_CONTAINER (priv->calendars_listbox)); + contains_source = FALSE; - gtk_container_add (GTK_CONTAINER (priv->calendars_listbox), row); + for (l = children; l != NULL; l = l->next) + { + if (g_object_get_data (l->data, "source") == source) + contains_source = TRUE; + } + + if (!contains_source) + { + GtkWidget *row; + + row = make_row_from_source (GCAL_SOURCE_DIALOG (user_data), source); + g_object_set_data (G_OBJECT (row), "source", source); + + gtk_container_add (GTK_CONTAINER (priv->calendars_listbox), row); + } + + g_list_free (children); } /**