Support resetting cell renderer colors with NULL again

This functionality was lost when GdkRGBA was introduced.

Bug 632936
This commit is contained in:
Matthias Clasen 2010-10-25 11:17:24 -04:00
parent 546be63ecc
commit 503698f587
2 changed files with 52 additions and 26 deletions

View File

@ -506,9 +506,12 @@ gtk_cell_renderer_set_property (GObject *object,
case PROP_CELL_BACKGROUND_GDK: case PROP_CELL_BACKGROUND_GDK:
{ {
GdkColor *color; GdkColor *color;
GdkRGBA rgba;
color = g_value_get_boxed (value); color = g_value_get_boxed (value);
if (color)
{
GdkRGBA rgba;
rgba.red = color->red / 65535.; rgba.red = color->red / 65535.;
rgba.green = color->green / 65535.; rgba.green = color->green / 65535.;
rgba.blue = color->blue / 65535.; rgba.blue = color->blue / 65535.;
@ -516,6 +519,11 @@ gtk_cell_renderer_set_property (GObject *object,
set_cell_bg_color (cell, &rgba); set_cell_bg_color (cell, &rgba);
} }
else
{
set_cell_bg_color (cell, NULL);
}
}
break; break;
case PROP_CELL_BACKGROUND_RGBA: case PROP_CELL_BACKGROUND_RGBA:
set_cell_bg_color (cell, g_value_get_boxed (value)); set_cell_bg_color (cell, g_value_get_boxed (value));

View File

@ -1206,29 +1206,47 @@ gtk_cell_renderer_text_set_property (GObject *object,
case PROP_BACKGROUND_GDK: case PROP_BACKGROUND_GDK:
{ {
GdkColor *color; GdkColor *color;
GdkRGBA rgba;
color = g_value_get_boxed (value); color = g_value_get_boxed (value);
if (color)
{
GdkRGBA rgba;
rgba.red = color->red / 65535.; rgba.red = color->red / 65535.;
rgba.green = color->green / 65535.; rgba.green = color->green / 65535.;
rgba.blue = color->blue / 65535.; rgba.blue = color->blue / 65535.;
rgba.alpha = 1;
set_bg_color (celltext, &rgba); set_bg_color (celltext, &rgba);
} }
else
{
set_bg_color (celltext, NULL);
}
}
break; break;
case PROP_FOREGROUND_GDK: case PROP_FOREGROUND_GDK:
{ {
GdkColor *color; GdkColor *color;
GdkRGBA rgba;
color = g_value_get_boxed (value); color = g_value_get_boxed (value);
if (color)
{
GdkRGBA rgba;
rgba.red = color->red / 65535.; rgba.red = color->red / 65535.;
rgba.green = color->green / 65535.; rgba.green = color->green / 65535.;
rgba.blue = color->blue / 65535.; rgba.blue = color->blue / 65535.;
rgba.alpha = 1;
set_fg_color (celltext, &rgba); set_fg_color (celltext, &rgba);
} }
else
{
set_fg_color (celltext, NULL);
}
}
break; break;
case PROP_BACKGROUND_RGBA: case PROP_BACKGROUND_RGBA: