From 0938183ae689f18ce9432b2878b82be75917d9eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timm=20B=C3=A4der?= Date: Mon, 24 Apr 2017 18:12:03 +0200 Subject: [PATCH] container: Use gtk_container_forall less Just iterate over the child widgets directly and produce a much nicer stack trace when debugging. --- gtk/gtkcontainer.c | 30 +++++++++++++----------------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/gtk/gtkcontainer.c b/gtk/gtkcontainer.c index 2670fb80e4..e86489f5ec 100644 --- a/gtk/gtkcontainer.c +++ b/gtk/gtkcontainer.c @@ -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 @@ -3045,10 +3037,9 @@ gtk_container_should_propagate_draw (GtkContainer *container, } static void -union_with_clip (GtkWidget *widget, - gpointer data) +union_with_clip (GtkWidget *widget, + 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