libgimpwidgets: support GtkCellRendererToggle's "inconsistent" state
and strike out GimpCellRendererToggle's icon in the inconsistent case.
This commit is contained in:
@ -368,7 +368,8 @@ gimp_cell_renderer_toggle_render (GtkCellRenderer *cell,
|
|||||||
|
|
||||||
if (gdk_rectangle_intersect (&draw_rect, &toggle_rect, &draw_rect))
|
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);
|
gdk_cairo_rectangle (cr, &draw_rect);
|
||||||
cairo_clip (cr);
|
cairo_clip (cr);
|
||||||
@ -377,6 +378,23 @@ gimp_cell_renderer_toggle_render (GtkCellRenderer *cell,
|
|||||||
toggle_rect.x, toggle_rect.y);
|
toggle_rect.x, toggle_rect.y);
|
||||||
cairo_paint (cr);
|
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);
|
cairo_destroy (cr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user