]> Pileus Git - ~andy/gtk/commitdiff
This commit fixes binary compatibility, which I broke with my recent cell
authorKristian Rietveld <kris@gtk.org>
Fri, 26 Apr 2002 19:45:22 +0000 (19:45 +0000)
committerKristian Rietveld <kristian@src.gnome.org>
Fri, 26 Apr 2002 19:45:22 +0000 (19:45 +0000)
Fri Apr 26 21:46:42 2002  Kristian Rietveld  <kris@gtk.org>

        This commit fixes binary compatibility, which I broke with my
        recent cell renderer commits :/.

        * gtk/gtkcellrenderer.h: move cell_background out of _GtkCellRenderer

        * gtk/gtkcellrenderer.c: create GtkCellRendererInfo, with the
        cell_background field and use this as object data. This way we keep
        the field private and dont break ABI.

        * gtk/gtkcellrendererpixbuf.h: remove stock_id, stock_size and
        stock_detail from _GtkCellRendererPixbuf

        * gtk/gtkcellrendererpixbuf.c: create a GtkCellRendererPixbufInfo
        with above mentioned fields. And update everything.

ChangeLog
ChangeLog.pre-2-10
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gtk/gtkcellrenderer.c
gtk/gtkcellrenderer.h
gtk/gtkcellrendererpixbuf.c
gtk/gtkcellrendererpixbuf.h

index bd28c20ed36412277301e749930825007fa0ab53..4838e9190d1b84d2ce523d05f6c020b69b381833 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,20 @@
+Fri Apr 26 21:46:42 2002  Kristian Rietveld  <kris@gtk.org>
+
+       This commit fixes binary compatibility, which I broke with my
+       recent cell renderer commits :/.
+
+       * gtk/gtkcellrenderer.h: move cell_background out of _GtkCellRenderer
+
+       * gtk/gtkcellrenderer.c: create GtkCellRendererInfo, with the
+       cell_background field and use this as object data. This way we keep
+       the field private and dont break ABI.
+
+       * gtk/gtkcellrendererpixbuf.h: remove stock_id, stock_size and
+       stock_detail from _GtkCellRendererPixbuf
+
+       * gtk/gtkcellrendererpixbuf.c: create a GtkCellRendererPixbufInfo
+       with above mentioned fields. And update everything.
+
 Fri Apr 26 21:42:02 2002  Kristian Rietveld  <kris@gtk.org>
 
        * gdk/x11/gdkdrawable-x11.h: include X11/Xlib.h, fixes the build
index bd28c20ed36412277301e749930825007fa0ab53..4838e9190d1b84d2ce523d05f6c020b69b381833 100644 (file)
@@ -1,3 +1,20 @@
+Fri Apr 26 21:46:42 2002  Kristian Rietveld  <kris@gtk.org>
+
+       This commit fixes binary compatibility, which I broke with my
+       recent cell renderer commits :/.
+
+       * gtk/gtkcellrenderer.h: move cell_background out of _GtkCellRenderer
+
+       * gtk/gtkcellrenderer.c: create GtkCellRendererInfo, with the
+       cell_background field and use this as object data. This way we keep
+       the field private and dont break ABI.
+
+       * gtk/gtkcellrendererpixbuf.h: remove stock_id, stock_size and
+       stock_detail from _GtkCellRendererPixbuf
+
+       * gtk/gtkcellrendererpixbuf.c: create a GtkCellRendererPixbufInfo
+       with above mentioned fields. And update everything.
+
 Fri Apr 26 21:42:02 2002  Kristian Rietveld  <kris@gtk.org>
 
        * gdk/x11/gdkdrawable-x11.h: include X11/Xlib.h, fixes the build
index bd28c20ed36412277301e749930825007fa0ab53..4838e9190d1b84d2ce523d05f6c020b69b381833 100644 (file)
@@ -1,3 +1,20 @@
+Fri Apr 26 21:46:42 2002  Kristian Rietveld  <kris@gtk.org>
+
+       This commit fixes binary compatibility, which I broke with my
+       recent cell renderer commits :/.
+
+       * gtk/gtkcellrenderer.h: move cell_background out of _GtkCellRenderer
+
+       * gtk/gtkcellrenderer.c: create GtkCellRendererInfo, with the
+       cell_background field and use this as object data. This way we keep
+       the field private and dont break ABI.
+
+       * gtk/gtkcellrendererpixbuf.h: remove stock_id, stock_size and
+       stock_detail from _GtkCellRendererPixbuf
+
+       * gtk/gtkcellrendererpixbuf.c: create a GtkCellRendererPixbufInfo
+       with above mentioned fields. And update everything.
+
 Fri Apr 26 21:42:02 2002  Kristian Rietveld  <kris@gtk.org>
 
        * gdk/x11/gdkdrawable-x11.h: include X11/Xlib.h, fixes the build
index bd28c20ed36412277301e749930825007fa0ab53..4838e9190d1b84d2ce523d05f6c020b69b381833 100644 (file)
@@ -1,3 +1,20 @@
+Fri Apr 26 21:46:42 2002  Kristian Rietveld  <kris@gtk.org>
+
+       This commit fixes binary compatibility, which I broke with my
+       recent cell renderer commits :/.
+
+       * gtk/gtkcellrenderer.h: move cell_background out of _GtkCellRenderer
+
+       * gtk/gtkcellrenderer.c: create GtkCellRendererInfo, with the
+       cell_background field and use this as object data. This way we keep
+       the field private and dont break ABI.
+
+       * gtk/gtkcellrendererpixbuf.h: remove stock_id, stock_size and
+       stock_detail from _GtkCellRendererPixbuf
+
+       * gtk/gtkcellrendererpixbuf.c: create a GtkCellRendererPixbufInfo
+       with above mentioned fields. And update everything.
+
 Fri Apr 26 21:42:02 2002  Kristian Rietveld  <kris@gtk.org>
 
        * gdk/x11/gdkdrawable-x11.h: include X11/Xlib.h, fixes the build
index bd28c20ed36412277301e749930825007fa0ab53..4838e9190d1b84d2ce523d05f6c020b69b381833 100644 (file)
@@ -1,3 +1,20 @@
+Fri Apr 26 21:46:42 2002  Kristian Rietveld  <kris@gtk.org>
+
+       This commit fixes binary compatibility, which I broke with my
+       recent cell renderer commits :/.
+
+       * gtk/gtkcellrenderer.h: move cell_background out of _GtkCellRenderer
+
+       * gtk/gtkcellrenderer.c: create GtkCellRendererInfo, with the
+       cell_background field and use this as object data. This way we keep
+       the field private and dont break ABI.
+
+       * gtk/gtkcellrendererpixbuf.h: remove stock_id, stock_size and
+       stock_detail from _GtkCellRendererPixbuf
+
+       * gtk/gtkcellrendererpixbuf.c: create a GtkCellRendererPixbufInfo
+       with above mentioned fields. And update everything.
+
 Fri Apr 26 21:42:02 2002  Kristian Rietveld  <kris@gtk.org>
 
        * gdk/x11/gdkdrawable-x11.h: include X11/Xlib.h, fixes the build
index bd28c20ed36412277301e749930825007fa0ab53..4838e9190d1b84d2ce523d05f6c020b69b381833 100644 (file)
@@ -1,3 +1,20 @@
+Fri Apr 26 21:46:42 2002  Kristian Rietveld  <kris@gtk.org>
+
+       This commit fixes binary compatibility, which I broke with my
+       recent cell renderer commits :/.
+
+       * gtk/gtkcellrenderer.h: move cell_background out of _GtkCellRenderer
+
+       * gtk/gtkcellrenderer.c: create GtkCellRendererInfo, with the
+       cell_background field and use this as object data. This way we keep
+       the field private and dont break ABI.
+
+       * gtk/gtkcellrendererpixbuf.h: remove stock_id, stock_size and
+       stock_detail from _GtkCellRendererPixbuf
+
+       * gtk/gtkcellrendererpixbuf.c: create a GtkCellRendererPixbufInfo
+       with above mentioned fields. And update everything.
+
 Fri Apr 26 21:42:02 2002  Kristian Rietveld  <kris@gtk.org>
 
        * gdk/x11/gdkdrawable-x11.h: include X11/Xlib.h, fixes the build
index 6327da9eb380bd158e0a07b45edfc2b39fd790c2..34dd331a52cc4d39bd7890dc4e308580d2abe9be 100644 (file)
@@ -51,6 +51,13 @@ enum {
   PROP_CELL_BACKGROUND_SET
 };
 
+#define CELLINFO_KEY "gtk-cell-renderer-info"
+
+typedef struct _GtkCellRendererInfo GtkCellRendererInfo;
+struct _GtkCellRendererInfo
+{
+  GdkColor cell_background;
+};
 
 GtkType
 gtk_cell_renderer_get_type (void)
@@ -81,6 +88,8 @@ gtk_cell_renderer_get_type (void)
 static void
 gtk_cell_renderer_init (GtkCellRenderer *cell)
 {
+  GtkCellRendererInfo *cellinfo;
+
   cell->mode = GTK_CELL_RENDERER_MODE_INERT;
   cell->visible = TRUE;
   cell->width = -1;
@@ -89,6 +98,9 @@ gtk_cell_renderer_init (GtkCellRenderer *cell)
   cell->yalign = 0.5;
   cell->xpad = 0;
   cell->ypad = 0;
+
+  cellinfo = g_new0 (GtkCellRendererInfo, 1);
+  g_object_set_data_full (G_OBJECT (cell), CELLINFO_KEY, cellinfo, g_free);
 }
 
 static void
@@ -237,6 +249,7 @@ gtk_cell_renderer_get_property (GObject     *object,
                                GParamSpec  *pspec)
 {
   GtkCellRenderer *cell = GTK_CELL_RENDERER (object);
+  GtkCellRendererInfo *cellinfo = g_object_get_data (object, CELLINFO_KEY);
 
   switch (param_id)
     {
@@ -274,9 +287,9 @@ gtk_cell_renderer_get_property (GObject     *object,
       {
        GdkColor color;
 
-       color.red = cell->cell_background.red;
-       color.green = cell->cell_background.green;
-       color.blue = cell->cell_background.blue;
+       color.red = cellinfo->cell_background.red;
+       color.green = cellinfo->cell_background.green;
+       color.blue = cellinfo->cell_background.blue;
 
        g_value_set_boxed (value, &color);
       }
@@ -362,6 +375,8 @@ static void
 set_cell_bg_color (GtkCellRenderer *cell,
                   GdkColor        *color)
 {
+  GtkCellRendererInfo *cellinfo = g_object_get_data (G_OBJECT (cell), CELLINFO_KEY);
+
   if (color)
     {
       if (!cell->cell_background_set)
@@ -370,9 +385,9 @@ set_cell_bg_color (GtkCellRenderer *cell,
          g_object_notify (G_OBJECT (cell), "cell_background_set");
        }
 
-      cell->cell_background.red = color->red;
-      cell->cell_background.green = color->green;
-      cell->cell_background.blue = color->blue;
+      cellinfo->cell_background.red = color->red;
+      cellinfo->cell_background.green = color->green;
+      cellinfo->cell_background.blue = color->blue;
     }
   else
     {
@@ -459,6 +474,7 @@ gtk_cell_renderer_render (GtkCellRenderer     *cell,
                          GtkCellRendererState flags)
 {
   gboolean selected = FALSE;
+  GtkCellRendererInfo *cellinfo = g_object_get_data (G_OBJECT (cell), CELLINFO_KEY);
 
   g_return_if_fail (GTK_IS_CELL_RENDERER (cell));
   g_return_if_fail (GTK_CELL_RENDERER_GET_CLASS (cell)->render != NULL);
@@ -470,9 +486,9 @@ gtk_cell_renderer_render (GtkCellRenderer     *cell,
       GdkColor color;
       GdkGC *gc;
 
-      color.red = cell->cell_background.red;
-      color.green = cell->cell_background.green;
-      color.blue = cell->cell_background.blue;
+      color.red = cellinfo->cell_background.red;
+      color.green = cellinfo->cell_background.green;
+      color.blue = cellinfo->cell_background.blue;
 
       gc = gdk_gc_new (window);
       gdk_gc_set_rgb_fg_color (gc, &color);
index 16e9ca97a5b89ffa88394926f51d6b43fa91506d..87a8f9be9cf778f0dc0cb4f190a6d3f747744324 100644 (file)
@@ -69,10 +69,7 @@ struct _GtkCellRenderer
   guint visible : 1;
   guint is_expander : 1;
   guint is_expanded : 1;
-
   guint cell_background_set : 1;
-
-  GdkColor cell_background;
 };
 
 struct _GtkCellRendererClass
index 4db396c15e739e536e1201889a37da1b4aa1d3aa..e2d840f594cbc867c25729d3c433dad29586aa17 100644 (file)
@@ -62,6 +62,15 @@ enum {
 
 static gpointer parent_class;
 
+#define CELLINFO_KEY "gtk-cell-renderer-pixbuf-info"
+
+typedef struct _GtkCellRendererPixbufInfo GtkCellRendererPixbufInfo;
+struct _GtkCellRendererPixbufInfo
+{
+  gchar *stock_id;
+  GtkIconSize stock_size;
+  gchar *stock_detail;
+};
 
 GtkType
 gtk_cell_renderer_pixbuf_get_type (void)
@@ -92,7 +101,11 @@ gtk_cell_renderer_pixbuf_get_type (void)
 static void
 gtk_cell_renderer_pixbuf_init (GtkCellRendererPixbuf *cellpixbuf)
 {
-       cellpixbuf->stock_size = GTK_ICON_SIZE_MENU;
+       GtkCellRendererPixbufInfo *cellinfo;
+
+       cellinfo = g_new0 (GtkCellRendererPixbufInfo, 1);
+       cellinfo->stock_size = GTK_ICON_SIZE_MENU;
+       g_object_set_data (G_OBJECT (cellpixbuf), CELLINFO_KEY, cellinfo);
 }
 
 static void
@@ -169,15 +182,19 @@ static void
 gtk_cell_renderer_pixbuf_finalize (GObject *object)
 {
   GtkCellRendererPixbuf *cellpixbuf = GTK_CELL_RENDERER_PIXBUF (object);
+  GtkCellRendererPixbufInfo *cellinfo = g_object_get_data (object, CELLINFO_KEY);
 
-  if (cellpixbuf->pixbuf && cellpixbuf->stock_id)
+  if (cellpixbuf->pixbuf && cellinfo->stock_id)
     g_object_unref (cellpixbuf->pixbuf);
 
-  if (cellpixbuf->stock_id)
-    g_free (cellpixbuf->stock_id);
+  if (cellinfo->stock_id)
+    g_free (cellinfo->stock_id);
 
-  if (cellpixbuf->stock_detail)
-    g_free (cellpixbuf->stock_detail);
+  if (cellinfo->stock_detail)
+    g_free (cellinfo->stock_detail);
+
+  g_free (cellinfo);
+  g_object_set_data (object, CELLINFO_KEY, NULL);
 
   (* G_OBJECT_CLASS (parent_class)->finalize) (object);
 }
@@ -189,6 +206,7 @@ gtk_cell_renderer_pixbuf_get_property (GObject        *object,
                                       GParamSpec     *pspec)
 {
   GtkCellRendererPixbuf *cellpixbuf = GTK_CELL_RENDERER_PIXBUF (object);
+  GtkCellRendererPixbufInfo *cellinfo = g_object_get_data (object, CELLINFO_KEY);
   
   switch (param_id)
     {
@@ -205,13 +223,13 @@ gtk_cell_renderer_pixbuf_get_property (GObject        *object,
                           cellpixbuf->pixbuf_expander_closed ? G_OBJECT (cellpixbuf->pixbuf_expander_closed) : NULL);
       break;
     case PROP_STOCK_ID:
-      g_value_set_string (value, cellpixbuf->stock_id);
+      g_value_set_string (value, cellinfo->stock_id);
       break;
     case PROP_STOCK_SIZE:
-      g_value_set_enum (value, cellpixbuf->stock_size);
+      g_value_set_enum (value, cellinfo->stock_size);
       break;
     case PROP_STOCK_DETAIL:
-      g_value_set_string (value, cellpixbuf->stock_detail);
+      g_value_set_string (value, cellinfo->stock_detail);
       break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
@@ -228,6 +246,7 @@ gtk_cell_renderer_pixbuf_set_property (GObject      *object,
 {
   GdkPixbuf *pixbuf;
   GtkCellRendererPixbuf *cellpixbuf = GTK_CELL_RENDERER_PIXBUF (object);
+  GtkCellRendererPixbufInfo *cellinfo = g_object_get_data (object, CELLINFO_KEY);
   
   switch (param_id)
     {
@@ -256,19 +275,19 @@ gtk_cell_renderer_pixbuf_set_property (GObject      *object,
       cellpixbuf->pixbuf_expander_closed = pixbuf;
       break;
     case PROP_STOCK_ID:
-      if (cellpixbuf->stock_id)
-        g_free (cellpixbuf->stock_id);
-      cellpixbuf->stock_id = g_strdup (g_value_get_string (value));
+      if (cellinfo->stock_id)
+        g_free (cellinfo->stock_id);
+      cellinfo->stock_id = g_strdup (g_value_get_string (value));
       g_object_notify (G_OBJECT (object), "stock_id");
       break;
     case PROP_STOCK_SIZE:
-      cellpixbuf->stock_size = g_value_get_enum (value);
+      cellinfo->stock_size = g_value_get_enum (value);
       g_object_notify (G_OBJECT (object), "stock_size");
       break;
     case PROP_STOCK_DETAIL:
-      if (cellpixbuf->stock_detail)
-        g_free (cellpixbuf->stock_detail);
-      cellpixbuf->stock_detail = g_strdup (g_value_get_string (value));
+      if (cellinfo->stock_detail)
+        g_free (cellinfo->stock_detail);
+      cellinfo->stock_detail = g_strdup (g_value_get_string (value));
       g_object_notify (G_OBJECT (object), "stock_detail");
       break;
     default:
@@ -276,7 +295,7 @@ gtk_cell_renderer_pixbuf_set_property (GObject      *object,
       break;
     }
 
-  if (cellpixbuf->pixbuf && cellpixbuf->stock_id)
+  if (cellpixbuf->pixbuf && cellinfo->stock_id)
     {
       g_object_unref (cellpixbuf->pixbuf);
       cellpixbuf->pixbuf = NULL;
@@ -306,13 +325,15 @@ static void
 gtk_cell_renderer_pixbuf_create_stock_pixbuf (GtkCellRendererPixbuf *cellpixbuf,
                                              GtkWidget             *widget)
 {
+  GtkCellRendererPixbufInfo *cellinfo = g_object_get_data (G_OBJECT (cellpixbuf), CELLINFO_KEY);
+
   if (cellpixbuf->pixbuf)
     g_object_unref (G_OBJECT (cellpixbuf->pixbuf));
 
   cellpixbuf->pixbuf = gtk_widget_render_icon (widget,
-                                              cellpixbuf->stock_id,
-                                              cellpixbuf->stock_size,
-                                              cellpixbuf->stock_detail);
+                                              cellinfo->stock_id,
+                                              cellinfo->stock_size,
+                                              cellinfo->stock_detail);
 }
 
 static void
@@ -325,12 +346,13 @@ gtk_cell_renderer_pixbuf_get_size (GtkCellRenderer *cell,
                                   gint            *height)
 {
   GtkCellRendererPixbuf *cellpixbuf = (GtkCellRendererPixbuf *) cell;
+  GtkCellRendererPixbufInfo *cellinfo = g_object_get_data (G_OBJECT (cell), CELLINFO_KEY);
   gint pixbuf_width = 0;
   gint pixbuf_height = 0;
   gint calc_width;
   gint calc_height;
 
-  if (!cellpixbuf->pixbuf && cellpixbuf->stock_id)
+  if (!cellpixbuf->pixbuf && cellinfo->stock_id)
     gtk_cell_renderer_pixbuf_create_stock_pixbuf (cellpixbuf, widget);
 
   if (cellpixbuf->pixbuf)
@@ -387,6 +409,7 @@ gtk_cell_renderer_pixbuf_render (GtkCellRenderer    *cell,
 
 {
   GtkCellRendererPixbuf *cellpixbuf = (GtkCellRendererPixbuf *) cell;
+  GtkCellRendererPixbufInfo *cellinfo = g_object_get_data (G_OBJECT (cell), CELLINFO_KEY);
   GdkPixbuf *pixbuf;
   GdkRectangle pix_rect;
   GdkRectangle draw_rect;
@@ -403,9 +426,9 @@ gtk_cell_renderer_pixbuf_render (GtkCellRenderer    *cell,
        pixbuf = cellpixbuf->pixbuf_expander_closed;
     }
 
-  if (!pixbuf && !cellpixbuf->stock_id)
+  if (!pixbuf && !cellinfo->stock_id)
     return;
-  else if (!pixbuf && cellpixbuf->stock_id)
+  else if (!pixbuf && cellinfo->stock_id)
     stock_pixbuf = TRUE;
 
   gtk_cell_renderer_pixbuf_get_size (cell, widget, cell_area,
@@ -421,7 +444,7 @@ gtk_cell_renderer_pixbuf_render (GtkCellRenderer    *cell,
   pix_rect.y += cell_area->y;
   pix_rect.width -= cell->xpad * 2;
   pix_rect.height -= cell->ypad * 2;
-  
+
   if (gdk_rectangle_intersect (cell_area, &pix_rect, &draw_rect))
     gdk_pixbuf_render_to_drawable_alpha (pixbuf,
                                          window,
index d41aae9002ff0d241d9a85d7caea125995e8bb4f..86d32fff02aa2fe532fc264507040809981f8cc0 100644 (file)
@@ -45,10 +45,6 @@ struct _GtkCellRendererPixbuf
   GdkPixbuf *pixbuf;
   GdkPixbuf *pixbuf_expander_open;
   GdkPixbuf *pixbuf_expander_closed;
-
-  gchar *stock_id;
-  GtkIconSize stock_size;
-  gchar *stock_detail;
 };
 
 struct _GtkCellRendererPixbufClass