summaryrefslogtreecommitdiff
path: root/gtk/gtkcellrenderer.c
diff options
context:
space:
mode:
authorKristian Rietveld <kris@gtk.org>2002-04-26 19:45:22 +0000
committerKristian Rietveld <kristian@src.gnome.org>2002-04-26 19:45:22 +0000
commit74295aeddffbeb40b9ea138b071f736f8ae0bcbb (patch)
tree0d74ee594cfd76b5c9fa7b3a3220f0985fc469b3 /gtk/gtkcellrenderer.c
parentf5e0470f6fea48d82f751345d2460a2852128539 (diff)
downloadgdk-pixbuf-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.c34
1 files changed, 25 insertions, 9 deletions
diff --git a/gtk/gtkcellrenderer.c b/gtk/gtkcellrenderer.c
index 6327da9eb..34dd331a5 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);