summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2016-10-28 12:55:33 -0400
committerMatthias Clasen <mclasen@redhat.com>2016-10-28 12:55:33 -0400
commitbf1c7be7385612e1ced307ab63610e4d5e54e465 (patch)
treee23afb0d745b9f18b1bfd43a08b00491562c1c56
parent4f5eb6a8521640a483945639734f93c643120e2d (diff)
downloadgtk+-bf1c7be7385612e1ced307ab63610e4d5e54e465.tar.gz
gadget: Add a get_render_node vfunc
This will let us do box gadgets like we do containers.
-rw-r--r--gtk/gtkcssgadget.c21
-rw-r--r--gtk/gtkcssgadgetprivate.h4
2 files changed, 21 insertions, 4 deletions
diff --git a/gtk/gtkcssgadget.c b/gtk/gtkcssgadget.c
index d7eac83fc7..4c7faa62e0 100644
--- a/gtk/gtkcssgadget.c
+++ b/gtk/gtkcssgadget.c
@@ -261,6 +261,10 @@ gtk_css_gadget_has_content (GtkCssGadget *gadget)
return gadget_class->draw != gtk_css_gadget_real_draw;
}
+static GskRenderNode * gtk_css_gadget_real_get_render_node (GtkCssGadget *gadget,
+ GskRenderer *renderer,
+ gboolean draw_focus);
+
static void
gtk_css_gadget_class_init (GtkCssGadgetClass *klass)
{
@@ -273,6 +277,7 @@ gtk_css_gadget_class_init (GtkCssGadgetClass *klass)
klass->get_preferred_size = gtk_css_gadget_real_get_preferred_size;
klass->allocate = gtk_css_gadget_real_allocate;
klass->draw = gtk_css_gadget_real_draw;
+ klass->get_render_node = gtk_css_gadget_real_get_render_node;
klass->style_changed = gtk_css_gadget_real_style_changed;
klass->has_content = gtk_css_gadget_has_content;
@@ -812,10 +817,10 @@ gtk_css_gadget_allocate (GtkCssGadget *gadget,
priv->clip = *out_clip;
}
-GskRenderNode *
-gtk_css_gadget_get_render_node (GtkCssGadget *gadget,
- GskRenderer *renderer,
- gboolean draw_focus)
+static GskRenderNode *
+gtk_css_gadget_real_get_render_node (GtkCssGadget *gadget,
+ GskRenderer *renderer,
+ gboolean draw_focus)
{
GtkCssGadgetPrivate *priv = gtk_css_gadget_get_instance_private (gadget);
GtkBorder clip, margin, border, padding;
@@ -1112,6 +1117,14 @@ gtk_css_gadget_draw (GtkCssGadget *gadget,
#endif
}
+GskRenderNode *
+gtk_css_gadget_get_render_node (GtkCssGadget *gadget,
+ GskRenderer *renderer,
+ gboolean draw_focus)
+{
+ return GTK_CSS_GADGET_GET_CLASS (gadget)->get_render_node (gadget, renderer, draw_focus);
+}
+
void
gtk_css_gadget_queue_resize (GtkCssGadget *gadget)
{
diff --git a/gtk/gtkcssgadgetprivate.h b/gtk/gtkcssgadgetprivate.h
index 54c6132551..347920d0ad 100644
--- a/gtk/gtkcssgadgetprivate.h
+++ b/gtk/gtkcssgadgetprivate.h
@@ -68,6 +68,10 @@ struct _GtkCssGadgetClass
int width,
int height);
+ GskRenderNode * (* get_render_node) (GtkCssGadget *gadget,
+ GskRenderer *renderer,
+ gboolean draw_focus);
+
void (* style_changed) (GtkCssGadget *gadget,
GtkCssStyleChange *change);