diff --git a/gtk/gtkstack.c b/gtk/gtkstack.c index b1448f28b7..0e4e46372f 100644 --- a/gtk/gtkstack.c +++ b/gtk/gtkstack.c @@ -2093,11 +2093,17 @@ gtk_stack_render (GtkCssGadget *gadget, if (priv->last_visible_node == NULL && priv->last_visible_child != NULL) { + GtkSnapshot last_visible_snapshot; + gtk_widget_get_allocation (priv->last_visible_child->widget, &priv->last_visible_surface_allocation); - gtk_snapshot_push (snapshot, FALSE, "StackCaptureLastVisibleChild"); - gtk_widget_snapshot (priv->last_visible_child->widget, snapshot); - priv->last_visible_node = gtk_snapshot_pop (snapshot); + gtk_snapshot_init (&last_visible_snapshot, + gtk_snapshot_get_renderer (snapshot), + snapshot->record_names, + NULL, + "StackCaptureLastVisibleChild"); + gtk_widget_snapshot (priv->last_visible_child->widget, &last_visible_snapshot); + priv->last_visible_node = gtk_snapshot_finish (&last_visible_snapshot); } gtk_snapshot_push_clip (snapshot,