[gtk+/wip/baedert/progressbar: 16/19] container: Use gtk_container_forall less



commit 9c725f7d7e9acc342772f456019635cc10ba04e6
Author: Timm Bäder <mail baedert org>
Date:   Mon Apr 24 18:12:03 2017 +0200

    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 files changed, 13 insertions(+), 17 deletions(-)
---
diff --git a/gtk/gtkcontainer.c b/gtk/gtkcontainer.c
index 2670fb8..e86489f 100644
--- a/gtk/gtkcontainer.c
+++ b/gtk/gtkcontainer.c
@@ -3014,23 +3014,15 @@ gtk_container_draw (GtkWidget *widget,
 }
 
 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


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]