libgimpwidgets: support GtkCellRendererToggle's "inconsistent" state

and strike out GimpCellRendererToggle's icon in the inconsistent case.
This commit is contained in:
Michael Natterer 2011-09-23 23:42:09 +02:00
parent 0e1d07d129
commit bc4fa9a8c4
1 changed files with 19 additions and 1 deletions

View File

@ -368,7 +368,8 @@ gimp_cell_renderer_toggle_render (GtkCellRenderer *cell,
if (gdk_rectangle_intersect (&draw_rect, &toggle_rect, &draw_rect))
{
cairo_t *cr = gdk_cairo_create (window);
cairo_t *cr = gdk_cairo_create (window);
gboolean inconsistent;
gdk_cairo_rectangle (cr, &draw_rect);
cairo_clip (cr);
@ -377,6 +378,23 @@ gimp_cell_renderer_toggle_render (GtkCellRenderer *cell,
toggle_rect.x, toggle_rect.y);
cairo_paint (cr);
g_object_get (toggle,
"inconsistent", &inconsistent,
NULL);
if (inconsistent)
{
gdk_cairo_set_source_color (cr, &style->fg[state]);
cairo_set_line_width (cr, 2.0);
cairo_move_to (cr,
toggle_rect.x + toggle_rect.width,
toggle_rect.y);
cairo_line_to (cr,
toggle_rect.x,
toggle_rect.y + toggle_rect.height);
cairo_stroke (cr);
}
cairo_destroy (cr);
}
}