[gimp/gtk3-port: 193/224] libgimpwidgets: move all GimpCellRendererToggle members to a private struct



commit 676aefaabb6392fe5401513b6592702d9218c76e
Author: Michael Natterer <mitch gimp org>
Date:   Fri Dec 31 18:15:15 2010 +0100

    libgimpwidgets: move all GimpCellRendererToggle members to a private struct

 libgimpwidgets/gimpcellrenderertoggle.c |  117 ++++++++++++++++++-------------
 libgimpwidgets/gimpcellrenderertoggle.h |    6 +--
 2 files changed, 69 insertions(+), 54 deletions(-)
---
diff --git a/libgimpwidgets/gimpcellrenderertoggle.c b/libgimpwidgets/gimpcellrenderertoggle.c
index 14f70dc..591478d 100644
--- a/libgimpwidgets/gimpcellrenderertoggle.c
+++ b/libgimpwidgets/gimpcellrenderertoggle.c
@@ -56,6 +56,20 @@ enum
 };
 
 
+typedef struct _GimpCellRendererTogglePrivate GimpCellRendererTogglePrivate;
+
+struct _GimpCellRendererTogglePrivate
+{
+  gchar       *stock_id;
+  GtkIconSize  stock_size;
+  GdkPixbuf   *pixbuf;
+};
+
+#define GET_PRIVATE(obj) G_TYPE_INSTANCE_GET_PRIVATE (obj, \
+                                                      GIMP_TYPE_CELL_RENDERER_TOGGLE, \
+                                                      GimpCellRendererTogglePrivate)
+
+
 static void gimp_cell_renderer_toggle_finalize     (GObject              *object);
 static void gimp_cell_renderer_toggle_get_property (GObject              *object,
                                                     guint                 param_id,
@@ -137,6 +151,8 @@ gimp_cell_renderer_toggle_class_init (GimpCellRendererToggleClass *klass)
                                                      DEFAULT_ICON_SIZE,
                                                      GIMP_PARAM_READWRITE |
                                                      G_PARAM_CONSTRUCT));
+
+  g_type_class_add_private (object_class, sizeof (GimpCellRendererTogglePrivate));
 }
 
 static void
@@ -147,18 +163,18 @@ gimp_cell_renderer_toggle_init (GimpCellRendererToggle *toggle)
 static void
 gimp_cell_renderer_toggle_finalize (GObject *object)
 {
-  GimpCellRendererToggle *toggle = GIMP_CELL_RENDERER_TOGGLE (object);
+  GimpCellRendererTogglePrivate *private = GET_PRIVATE (object);
 
-  if (toggle->stock_id)
+  if (private->stock_id)
     {
-      g_free (toggle->stock_id);
-      toggle->stock_id = NULL;
+      g_free (private->stock_id);
+      private->stock_id = NULL;
     }
 
-  if (toggle->pixbuf)
+  if (private->pixbuf)
     {
-      g_object_unref (toggle->pixbuf);
-      toggle->pixbuf = NULL;
+      g_object_unref (private->pixbuf);
+      private->pixbuf = NULL;
     }
 
   G_OBJECT_CLASS (parent_class)->finalize (object);
@@ -170,15 +186,15 @@ gimp_cell_renderer_toggle_get_property (GObject    *object,
                                         GValue     *value,
                                         GParamSpec *pspec)
 {
-  GimpCellRendererToggle *toggle = GIMP_CELL_RENDERER_TOGGLE (object);
+  GimpCellRendererTogglePrivate *private = GET_PRIVATE (object);
 
   switch (param_id)
     {
     case PROP_STOCK_ID:
-      g_value_set_string (value, toggle->stock_id);
+      g_value_set_string (value, private->stock_id);
       break;
     case PROP_STOCK_SIZE:
-      g_value_set_int (value, toggle->stock_size);
+      g_value_set_int (value, private->stock_size);
       break;
 
     default:
@@ -193,17 +209,17 @@ gimp_cell_renderer_toggle_set_property (GObject      *object,
                                         const GValue *value,
                                         GParamSpec   *pspec)
 {
-  GimpCellRendererToggle *toggle = GIMP_CELL_RENDERER_TOGGLE (object);
+  GimpCellRendererTogglePrivate *private = GET_PRIVATE (object);
 
   switch (param_id)
     {
     case PROP_STOCK_ID:
-      if (toggle->stock_id)
-        g_free (toggle->stock_id);
-      toggle->stock_id = g_value_dup_string (value);
+      if (private->stock_id)
+        g_free (private->stock_id);
+      private->stock_id = g_value_dup_string (value);
       break;
     case PROP_STOCK_SIZE:
-      toggle->stock_size = g_value_get_int (value);
+      private->stock_size = g_value_get_int (value);
       break;
 
     default:
@@ -211,10 +227,10 @@ gimp_cell_renderer_toggle_set_property (GObject      *object,
       break;
     }
 
-  if (toggle->pixbuf)
+  if (private->pixbuf)
     {
-      g_object_unref (toggle->pixbuf);
-      toggle->pixbuf = NULL;
+      g_object_unref (private->pixbuf);
+      private->pixbuf = NULL;
     }
 }
 
@@ -227,19 +243,20 @@ gimp_cell_renderer_toggle_get_size (GtkCellRenderer    *cell,
                                     gint               *width,
                                     gint               *height)
 {
-  GimpCellRendererToggle *toggle  = GIMP_CELL_RENDERER_TOGGLE (cell);
-  GtkStyleContext        *context = gtk_widget_get_style_context (widget);
-  GtkBorder               border;
-  gint                    calc_width;
-  gint                    calc_height;
-  gint                    pixbuf_width;
-  gint                    pixbuf_height;
-  gfloat                  xalign;
-  gfloat                  yalign;
-  gint                    xpad;
-  gint                    ypad;
-
-  if (! toggle->stock_id)
+  GimpCellRendererToggle        *toggle  = GIMP_CELL_RENDERER_TOGGLE (cell);
+  GimpCellRendererTogglePrivate *private = GET_PRIVATE (cell);
+  GtkStyleContext               *context = gtk_widget_get_style_context (widget);
+  GtkBorder                      border;
+  gint                           calc_width;
+  gint                           calc_height;
+  gint                           pixbuf_width;
+  gint                           pixbuf_height;
+  gfloat                         xalign;
+  gfloat                         yalign;
+  gint                           xpad;
+  gint                           ypad;
+
+  if (! private->stock_id)
     {
       GTK_CELL_RENDERER_CLASS (parent_class)->get_size (cell,
                                                         widget,
@@ -254,11 +271,11 @@ gimp_cell_renderer_toggle_get_size (GtkCellRenderer    *cell,
   gtk_cell_renderer_get_alignment (cell, &xalign, &yalign);
   gtk_cell_renderer_get_padding (cell, &xpad, &ypad);
 
-  if (! toggle->pixbuf)
+  if (! private->pixbuf)
     gimp_cell_renderer_toggle_create_pixbuf (toggle, widget);
 
-  pixbuf_width  = gdk_pixbuf_get_width  (toggle->pixbuf);
-  pixbuf_height = gdk_pixbuf_get_height (toggle->pixbuf);
+  pixbuf_width  = gdk_pixbuf_get_width  (private->pixbuf);
+  pixbuf_height = gdk_pixbuf_get_height (private->pixbuf);
 
   calc_width  = pixbuf_width  + (gint) xpad * 2;
   calc_height = pixbuf_height + (gint) ypad * 2;
@@ -303,15 +320,15 @@ gimp_cell_renderer_toggle_render (GtkCellRenderer      *cell,
                                   const GdkRectangle   *cell_area,
                                   GtkCellRendererState  flags)
 {
-  GimpCellRendererToggle *toggle  = GIMP_CELL_RENDERER_TOGGLE (cell);
-  GtkStyleContext        *context = gtk_widget_get_style_context (widget);
-  GdkRectangle            toggle_rect;
-  GtkStateFlags           state   = 0;
-  gboolean                active;
-  gint                    xpad;
-  gint                    ypad;
-
-  if (! toggle->stock_id)
+  GimpCellRendererTogglePrivate *private = GET_PRIVATE (cell);
+  GtkStyleContext               *context = gtk_widget_get_style_context (widget);
+  GdkRectangle                   toggle_rect;
+  GtkStateFlags                  state   = 0;
+  gboolean                       active;
+  gint                           xpad;
+  gint                           ypad;
+
+  if (! private->stock_id)
     {
       GTK_CELL_RENDERER_CLASS (parent_class)->render (cell, cr, widget,
                                                       background_area,
@@ -376,7 +393,7 @@ gimp_cell_renderer_toggle_render (GtkCellRenderer      *cell,
       toggle_rect.width  -= border.left + border.right;
       toggle_rect.height -= border.top + border.bottom;
 
-      gdk_cairo_set_source_pixbuf (cr, toggle->pixbuf,
+      gdk_cairo_set_source_pixbuf (cr, private->pixbuf,
                                    toggle_rect.x, toggle_rect.y);
       cairo_paint (cr);
     }
@@ -415,12 +432,14 @@ static void
 gimp_cell_renderer_toggle_create_pixbuf (GimpCellRendererToggle *toggle,
                                          GtkWidget              *widget)
 {
-  if (toggle->pixbuf)
-    g_object_unref (toggle->pixbuf);
+  GimpCellRendererTogglePrivate *private = GET_PRIVATE (toggle);
+
+  if (private->pixbuf)
+    g_object_unref (private->pixbuf);
 
-  toggle->pixbuf = gtk_widget_render_icon_pixbuf (widget,
-                                                  toggle->stock_id,
-                                                  toggle->stock_size);
+  private->pixbuf = gtk_widget_render_icon_pixbuf (widget,
+                                                   private->stock_id,
+                                                   private->stock_size);
 }
 
 
diff --git a/libgimpwidgets/gimpcellrenderertoggle.h b/libgimpwidgets/gimpcellrenderertoggle.h
index c337922..65bf572 100644
--- a/libgimpwidgets/gimpcellrenderertoggle.h
+++ b/libgimpwidgets/gimpcellrenderertoggle.h
@@ -37,11 +37,7 @@ typedef struct _GimpCellRendererToggleClass GimpCellRendererToggleClass;
 
 struct _GimpCellRendererToggle
 {
-  GtkCellRendererToggle       parent_instance;
-
-  gchar                      *stock_id;
-  GtkIconSize                 stock_size;
-  GdkPixbuf                  *pixbuf;
+  GtkCellRendererToggle  parent_instance;
 };
 
 struct _GimpCellRendererToggleClass



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