[gtk+] container: ensure we only append a single node



commit f728f3338214024471a52b188a2affe0cf7a2f04
Author: Benjamin Otte <otte redhat com>
Date:   Tue Nov 15 22:39:26 2016 +0100

    container: ensure we only append a single node
    
    The snapshot vfuncs must only append at most a single node,
    otherwise things are going to break if the widget is the root node.
    
    Unfortunately there is no code that can check this in a generic fashion,
    so we'll have to debug this on a case-by-case basis.

 gtk/gtkcontainer.c |   13 ++++++++++++-
 1 files changed, 12 insertions(+), 1 deletions(-)
---
diff --git a/gtk/gtkcontainer.c b/gtk/gtkcontainer.c
index 629eda1..767cc5a 100644
--- a/gtk/gtkcontainer.c
+++ b/gtk/gtkcontainer.c
@@ -3095,10 +3095,21 @@ gtk_container_snapshot (GtkWidget   *widget,
                         GtkSnapshot *snapshot)
 {
   GtkContainer *container = GTK_CONTAINER (widget);
-  
+  GtkAllocation allocation, clip;
+  graphene_rect_t bounds;
+
+  gtk_widget_get_clip (widget, &clip);
+  gtk_widget_get_allocation (widget, &allocation);
+  graphene_rect_init (&bounds,
+                      clip.x - allocation.x, clip.y - allocation.y,
+                      clip.width, clip.height);
+  gtk_snapshot_push (snapshot, &bounds, "Children<%s>", G_OBJECT_TYPE_NAME (container));
+
   gtk_container_forall (container,
                         gtk_container_snapshot_forall,
                         snapshot);
+
+  gtk_snapshot_pop (snapshot);
 }
 
 static void


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