diff options
author | Kristian Rietveld <kris@gtk.org> | 2002-04-26 19:45:22 +0000 |
---|---|---|
committer | Kristian Rietveld <kristian@src.gnome.org> | 2002-04-26 19:45:22 +0000 |
commit | 74295aeddffbeb40b9ea138b071f736f8ae0bcbb (patch) | |
tree | 0d74ee594cfd76b5c9fa7b3a3220f0985fc469b3 /gtk/gtkcellrenderer.c | |
parent | f5e0470f6fea48d82f751345d2460a2852128539 (diff) | |
download | gtk+-74295aeddffbeb40b9ea138b071f736f8ae0bcbb.tar.gz |
This commit fixes binary compatibility, which I broke with my recent cell
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.
Diffstat (limited to 'gtk/gtkcellrenderer.c')
-rw-r--r-- | gtk/gtkcellrenderer.c | 34 |
1 files changed, 25 insertions, 9 deletions
diff --git a/gtk/gtkcellrenderer.c b/gtk/gtkcellrenderer.c index 6327da9eb3..34dd331a52 100644 --- a/gtk/gtkcellrenderer.c +++ b/gtk/gtkcellrenderer.c @@ -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); |