From bc4fa9a8c4defdd39b5ede34e5fb69bdbe9ee33e Mon Sep 17 00:00:00 2001 From: Michael Natterer Date: Fri, 23 Sep 2011 23:42:09 +0200 Subject: [PATCH] libgimpwidgets: support GtkCellRendererToggle's "inconsistent" state and strike out GimpCellRendererToggle's icon in the inconsistent case. --- libgimpwidgets/gimpcellrenderertoggle.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/libgimpwidgets/gimpcellrenderertoggle.c b/libgimpwidgets/gimpcellrenderertoggle.c index 218fbd825b..c18e922890 100644 --- a/libgimpwidgets/gimpcellrenderertoggle.c +++ b/libgimpwidgets/gimpcellrenderertoggle.c @@ -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); } }