container: Use gtk_container_forall less

Just iterate over the child widgets directly and produce a much nicer
stack trace when debugging.
This commit is contained in:
Timm Bäder 2017-04-24 18:12:03 +02:00
parent 927f2f5c06
commit 0938183ae6

View File

@ -3013,24 +3013,16 @@ gtk_container_draw (GtkWidget *widget,
return FALSE;
}
static void
gtk_container_snapshot_forall (GtkWidget *child,
gpointer snapshot)
{
gtk_widget_snapshot_child (_gtk_widget_get_parent (child),
child,
snapshot);
}
static void
gtk_container_snapshot (GtkWidget *widget,
GtkSnapshot *snapshot)
{
GtkContainer *container = GTK_CONTAINER (widget);
GtkWidget *child;
gtk_container_forall (container,
gtk_container_snapshot_forall,
snapshot);
for (child = _gtk_widget_get_first_child (widget);
child != NULL;
child = _gtk_widget_get_next_sibling (child))
gtk_widget_snapshot_child (widget, child, snapshot);
}
static gboolean
@ -3046,9 +3038,8 @@ gtk_container_should_propagate_draw (GtkContainer *container,
static void
union_with_clip (GtkWidget *widget,
gpointer data)
GtkAllocation *clip)
{
GdkRectangle *clip = data;
GtkAllocation widget_clip;
if (!gtk_widget_is_visible (widget) ||
@ -3067,9 +3058,14 @@ void
gtk_container_get_children_clip (GtkContainer *container,
GtkAllocation *out_clip)
{
GtkWidget *child;
memset (out_clip, 0, sizeof (GtkAllocation));
gtk_container_forall (container, union_with_clip, out_clip);
for (child = _gtk_widget_get_first_child (GTK_WIDGET (container));
child != NULL;
child = _gtk_widget_get_next_sibling (child))
union_with_clip (child, out_clip);
}
static void