Fixed bug when destroying child widgets.

This commit is contained in:
Erick Pérez Castellanos
2012-08-23 09:43:57 -04:00
parent a9da2aa552
commit 009e65cdd3
2 changed files with 26 additions and 7 deletions
+15 -6
View File
@@ -759,15 +759,21 @@ gcal_month_view_remove (GtkContainer *container,
child = (GcalViewChild*) l->data;
if (child->widget == widget)
{
gboolean was_visible;
was_visible = gtk_widget_get_visible (widget);
gtk_widget_unparent (widget);
priv->days[i] = g_list_remove (priv->days[i], child);
g_free (child);
i = 36;
break;
if (was_visible)
gtk_widget_queue_resize (GTK_WIDGET (container));
return;
}
}
}
gtk_widget_unparent (widget);
}
static void
@@ -784,11 +790,15 @@ gcal_month_view_forall (GtkContainer *container,
for (i = 0; i < 35; i++)
{
for (l = priv->days[i]; l != NULL; l = l->next)
l = priv->days[i];
while (l)
{
GcalViewChild *child;
child = (GcalViewChild*) l->data;
l = l->next;
(* callback) (child->widget, callback_data);
}
}
@@ -1346,8 +1356,7 @@ gcal_month_view_remove_by_uuid (GcalView *view,
if (g_strcmp0 (uuid, widget_uuid) == 0)
{
gtk_widget_destroy (child->widget);
i = 36;
break;
return;
}
}
}
+11 -1
View File
@@ -900,6 +900,7 @@ gcal_week_view_remove (GtkContainer *container,
GList *l;
icaltimetype *date;
gint day;
gboolean was_visible;
g_return_if_fail (GCAL_IS_WEEK_VIEW (container));
g_return_if_fail (gtk_widget_get_parent (widget) == GTK_WIDGET (container));
@@ -921,8 +922,13 @@ gcal_week_view_remove (GtkContainer *container,
}
}
was_visible = gtk_widget_get_visible (widget);
gtk_widget_unparent (widget);
if (was_visible)
gtk_widget_queue_resize (GTK_WIDGET (container));
g_free (date);
}
@@ -940,11 +946,15 @@ gcal_week_view_forall (GtkContainer *container,
for (i = 0; i < 7; i++)
{
for (l = priv->days[i]; l != NULL; l = l->next)
l = priv->days[i];
while (l)
{
GcalViewChild *child;
child = (GcalViewChild*) l->data;
l = l->next;
(* callback) (child->widget, callback_data);
}
}