From 88d02b8f91e1bf0a4987dc70cedcbf45eda3d63f Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sun, 7 Aug 2016 00:36:24 -0400 Subject: [PATCH] Covert GtkOverlay to indirect rendering There is no gadget, so we use the gtk_widget_create_render_node function for the first time here. --- gtk/gtkoverlay.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/gtk/gtkoverlay.c b/gtk/gtkoverlay.c index 29fc355cba..5bc0c11d9c 100644 --- a/gtk/gtkoverlay.c +++ b/gtk/gtkoverlay.c @@ -24,6 +24,8 @@ #include "gtkbuildable.h" #include "gtkscrolledwindow.h" #include "gtkmarshalers.h" +#include "gtkwidgetprivate.h" +#include "gtkcontainerprivate.h" #include "gtkprivate.h" #include "gtkintl.h" @@ -482,6 +484,20 @@ gtk_overlay_unmap (GtkWidget *widget) GTK_WIDGET_CLASS (gtk_overlay_parent_class)->unmap (widget); } +static GskRenderNode * +gtk_overlay_get_render_node (GtkWidget *widget, + GskRenderer *renderer) +{ + GskRenderNode *res = gtk_widget_create_render_node (widget, renderer, G_OBJECT_TYPE_NAME (widget)); + + if (res == NULL) + return NULL; + + gtk_container_propagate_render_node (GTK_CONTAINER (widget), renderer, res); + + return res; +} + static void gtk_overlay_remove (GtkContainer *container, GtkWidget *widget) @@ -738,7 +754,6 @@ gtk_overlay_get_child_property (GtkContainer *container, } } - static void gtk_overlay_class_init (GtkOverlayClass *klass) { @@ -751,6 +766,7 @@ gtk_overlay_class_init (GtkOverlayClass *klass) widget_class->unrealize = gtk_overlay_unrealize; widget_class->map = gtk_overlay_map; widget_class->unmap = gtk_overlay_unmap; + widget_class->get_render_node = gtk_overlay_get_render_node; container_class->remove = gtk_overlay_remove; container_class->forall = gtk_overlay_forall;