[gtk+] container: ensure we only append a single node
- From: Benjamin Otte <otte src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] container: ensure we only append a single node
- Date: Tue, 15 Nov 2016 21:44:52 +0000 (UTC)
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]