From 54662f4ca041c9e232216ed18a4eeea498be7a4c Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Mon, 18 Mar 2019 07:51:47 -0400 Subject: [PATCH] widget: Don't snapshot foreign children When snapshotting, we walk down the widget tree. We need to skip children that have a different surface, since those will do their own snapshot. --- gtk/gtkwidget.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c index b771d25b51..0f21d1d360 100644 --- a/gtk/gtkwidget.c +++ b/gtk/gtkwidget.c @@ -13367,6 +13367,8 @@ gtk_widget_forall (GtkWidget *widget, * * gtk_widget_snapshot_child() takes care of translating the origin of * @snapshot, and deciding whether the child needs to be snapshot. + * + * This function does nothing for children that implement #GtkNative. **/ void gtk_widget_snapshot_child (GtkWidget *widget, @@ -13378,6 +13380,9 @@ gtk_widget_snapshot_child (GtkWidget *widget, g_return_if_fail (_gtk_widget_get_parent (child) == widget); g_return_if_fail (snapshot != NULL); + if (GTK_IS_NATIVE (child)) + return; + gtk_snapshot_save (snapshot); gtk_snapshot_transform (snapshot, priv->transform);