[gtk+/wip/matthiasc/render-node-vfunc: 2/6] gadget: Add a get_render_node vfunc



commit bf1c7be7385612e1ced307ab63610e4d5e54e465
Author: Matthias Clasen <mclasen redhat com>
Date:   Fri Oct 28 12:55:33 2016 -0400

    gadget: Add a get_render_node vfunc
    
    This will let us do box gadgets like we do containers.

 gtk/gtkcssgadget.c        |   21 +++++++++++++++++----
 gtk/gtkcssgadgetprivate.h |    4 ++++
 2 files changed, 21 insertions(+), 4 deletions(-)
---
diff --git a/gtk/gtkcssgadget.c b/gtk/gtkcssgadget.c
index d7eac83..4c7faa6 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 54c6132..347920d 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);
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]