[gtk+] gadget: Add queue_resize/allocate/draw() functions



commit f1e277969a7f7f45b840823a641fc43566e3ebfa
Author: Benjamin Otte <otte redhat com>
Date:   Thu Dec 24 20:33:36 2015 +0100

    gadget: Add queue_resize/allocate/draw() functions

 gtk/gtkcssgadget.c        |   42 +++++++++++++++++++++++++++++++-----------
 gtk/gtkcssgadgetprivate.h |    4 ++++
 2 files changed, 35 insertions(+), 11 deletions(-)
---
diff --git a/gtk/gtkcssgadget.c b/gtk/gtkcssgadget.c
index dfda403..9857c46 100644
--- a/gtk/gtkcssgadget.c
+++ b/gtk/gtkcssgadget.c
@@ -122,17 +122,12 @@ static void
 gtk_css_gadget_real_style_changed (GtkCssGadget      *gadget,
                                    GtkCssStyleChange *change)
 {
-  GtkCssGadgetPrivate *priv = gtk_css_gadget_get_instance_private (gadget);
-
-  if (priv->owner)
-    {
-      if (gtk_css_style_change_affects (change, GTK_CSS_AFFECTS_SIZE))
-        gtk_widget_queue_resize (priv->owner);
-      else if (gtk_css_style_change_affects (change, GTK_CSS_AFFECTS_CLIP))
-        gtk_widget_queue_allocate (priv->owner);
-      else if (gtk_css_style_change_affects (change, GTK_CSS_AFFECTS_REDRAW))
-        gtk_widget_queue_draw (priv->owner);
-    }
+  if (gtk_css_style_change_affects (change, GTK_CSS_AFFECTS_SIZE))
+    gtk_css_gadget_queue_resize (gadget);
+  else if (gtk_css_style_change_affects (change, GTK_CSS_AFFECTS_CLIP))
+    gtk_css_gadget_queue_allocate (gadget);
+  else if (gtk_css_style_change_affects (change, GTK_CSS_AFFECTS_REDRAW))
+    gtk_css_gadget_queue_draw (gadget);
 }
 
 static void
@@ -775,6 +770,31 @@ gtk_css_node_style_changed_for_widget (GtkCssNode  *node,
 }
 
 void
+gtk_css_gadget_queue_resize (GtkCssGadget *gadget)
+{
+  g_return_if_fail (GTK_IS_CSS_GADGET (gadget));
+
+  gtk_widget_queue_resize (gtk_css_gadget_get_owner (gadget));
+}
+
+void
+gtk_css_gadget_queue_allocate (GtkCssGadget *gadget)
+{
+  g_return_if_fail (GTK_IS_CSS_GADGET (gadget));
+
+  gtk_widget_queue_allocate (gtk_css_gadget_get_owner (gadget));
+}
+
+void
+gtk_css_gadget_queue_draw (GtkCssGadget *gadget)
+{
+  g_return_if_fail (GTK_IS_CSS_GADGET (gadget));
+  
+  /* XXX: Only invalidate clip here */
+  gtk_widget_queue_draw (gtk_css_gadget_get_owner (gadget));
+}
+
+void
 gtk_css_gadget_get_border_allocation (GtkCssGadget  *gadget,
                                       GtkAllocation *allocation,
                                       int           *baseline)
diff --git a/gtk/gtkcssgadgetprivate.h b/gtk/gtkcssgadgetprivate.h
index 40efe8d..ec898bd 100644
--- a/gtk/gtkcssgadgetprivate.h
+++ b/gtk/gtkcssgadgetprivate.h
@@ -107,6 +107,10 @@ void            gtk_css_gadget_allocate                 (GtkCssGadget
 void            gtk_css_gadget_draw                     (GtkCssGadget           *gadget,
                                                          cairo_t                *cr);
 
+void            gtk_css_gadget_queue_resize             (GtkCssGadget           *gadget);
+void            gtk_css_gadget_queue_allocate           (GtkCssGadget           *gadget);
+void            gtk_css_gadget_queue_draw               (GtkCssGadget           *gadget);
+
 void            gtk_css_gadget_get_border_allocation    (GtkCssGadget           *gadget,
                                                          GtkAllocation          *allocation,
                                                          int                    *baseline);


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