From: Timm Bäder Date: Tue, 1 May 2018 19:18:51 +0000 (+0200) Subject: snapshot: merge container nodes X-Git-Tag: archive/raspbian/4.4.1+ds1-2+rpi1^2~18^2~22^2~339 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=622a150bb4a83afba909c051a4baf12a88868e62;p=gtk4.git snapshot: merge container nodes A container node inside another container node doesn't make a lot of sense, we can instead just use the parent container node and add the child container node's children to it directly. --- diff --git a/gtk/gtksnapshot.c b/gtk/gtksnapshot.c index 10ea6556e5..4d367948e9 100644 --- a/gtk/gtksnapshot.c +++ b/gtk/gtksnapshot.c @@ -1076,8 +1076,22 @@ gtk_snapshot_append_node_internal (GtkSnapshot *snapshot, if (current_state) { - g_ptr_array_add (snapshot->nodes, gsk_render_node_ref (node)); - current_state->n_nodes ++; + if (gsk_render_node_get_node_type (node) == GSK_CONTAINER_NODE) + { + guint i, p; + + for (i = 0, p = gsk_container_node_get_n_children (node); i < p; i ++) + g_ptr_array_add (snapshot->nodes, + gsk_render_node_ref (gsk_container_node_get_child (node, i))); + + current_state->n_nodes += p; + /* Don't unref @node... */ + } + else + { + g_ptr_array_add (snapshot->nodes, gsk_render_node_ref (node)); + current_state->n_nodes ++; + } } else {