Covert GtkOverlay to indirect rendering
There is no gadget, so we use the gtk_widget_create_render_node function for the first time here.
This commit is contained in:
committed by
Emmanuele Bassi
parent
8c9717119d
commit
88d02b8f91
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user