search-view: properly remove widgets by their data

This commit is contained in:
Georges Basile Stavracas Neto
2015-01-09 08:36:13 -05:00
committed by Erick Pérez Castellanos
parent 13ee94248d
commit c8b143e399
+31 -4
View File
@@ -287,12 +287,39 @@ gcal_search_view_component_removed (ECalDataModelSubscriber *subscriber,
const gchar *rid)
{
GcalSearchViewPrivate *priv;
GList *children, *aux;
ESource *source;
priv =
gcal_search_view_get_instance_private (GCAL_SEARCH_VIEW (subscriber));
priv = gcal_search_view_get_instance_private (GCAL_SEARCH_VIEW (subscriber));
children = gtk_container_get_children (GTK_CONTAINER (priv->listbox));
source = e_client_get_source (E_CLIENT (client));
gtk_container_foreach (GTK_CONTAINER (priv->listbox),
(GtkCallback) gtk_widget_destroy, NULL);
/* search for the event */
for (aux = children; aux != NULL; aux = aux->next)
{
GcalEventWidget *event_widget;
GtkWidget *row;
gchar *uuid;
row = aux->data;
event_widget = GCAL_EVENT_WIDGET (gtk_bin_get_child (GTK_BIN (row)));
/* if the widget has recurrency, it's UUID is different */
if (rid != NULL)
uuid = g_strdup_printf ("%s:%s:%s", e_source_get_uid (source), uid, rid);
else
uuid = g_strdup_printf ("%s:%s", e_source_get_uid (source), uid);
/* compare widget by uid */
if (event_widget != NULL && g_strcmp0 (gcal_event_widget_peek_uuid (event_widget), uuid) == 0)
{
gtk_container_remove (GTK_CONTAINER (priv->listbox), row);
}
g_free (uuid);
}
g_list_free (children);
}
static void