diff options
author | infirit <[email protected]> | 2014-12-10 00:12:56 +0100 |
---|---|---|
committer | infirit <[email protected]> | 2014-12-10 00:54:06 +0100 |
commit | 7abbbdbf7ccef858d5bdb18880c64eb2fca7e2c2 (patch) | |
tree | f9df8810071ba5886b20465817a79b4367d0e946 /cut-n-paste/gimpcellrenderertoggle/gimpcellrenderertoggle.c | |
parent | 0cda5a72c129bdb835c91a03c08562a11b056868 (diff) | |
download | atril-7abbbdbf7ccef858d5bdb18880c64eb2fca7e2c2.tar.bz2 atril-7abbbdbf7ccef858d5bdb18880c64eb2fca7e2c2.tar.xz |
Gtk3: [gimpcellrenderertoggle] Paint a shadow when the mouse is over the cell renderer
Taken from evince commit: 0a2d3c2d9dd1158dfb8cacd72abb498acd0e6fef
From: Carlos Garcia Campos <[email protected]>
Diffstat (limited to 'cut-n-paste/gimpcellrenderertoggle/gimpcellrenderertoggle.c')
-rw-r--r-- | cut-n-paste/gimpcellrenderertoggle/gimpcellrenderertoggle.c | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/cut-n-paste/gimpcellrenderertoggle/gimpcellrenderertoggle.c b/cut-n-paste/gimpcellrenderertoggle/gimpcellrenderertoggle.c index 577aa086..2ae52737 100644 --- a/cut-n-paste/gimpcellrenderertoggle/gimpcellrenderertoggle.c +++ b/cut-n-paste/gimpcellrenderertoggle/gimpcellrenderertoggle.c @@ -309,6 +309,9 @@ gimp_cell_renderer_toggle_render (GtkCellRenderer *cell, GtkStyle *style = gtk_widget_get_style (widget); GdkRectangle toggle_rect; GdkRectangle draw_rect; +#if GTK_CHECK_VERSION (3, 0, 0) + GdkRectangle clip_rect; +#endif GtkStateType state; gboolean active; gint xpad; @@ -369,7 +372,24 @@ gimp_cell_renderer_toggle_render (GtkCellRenderer *cell, state = GTK_STATE_INSENSITIVE; } -#if !GTK_CHECK_VERSION (3, 0, 0) +#if GTK_CHECK_VERSION (3, 0, 0) + if ((flags & GTK_CELL_RENDERER_PRELIT) && + gdk_cairo_get_clip_rectangle(cr, &clip_rect) && + gdk_rectangle_intersect (&clip_rect, cell_area, &draw_rect)) + { + cairo_save (cr); + gdk_cairo_rectangle (cr, &draw_rect); + cairo_clip (cr); + gtk_paint_shadow (style, + cr, + state, + active ? GTK_SHADOW_IN : GTK_SHADOW_OUT, + widget, NULL, + toggle_rect.x, toggle_rect.y, + toggle_rect.width, toggle_rect.height); + cairo_restore (cr); + } +#else if (gdk_rectangle_intersect (expose_area, cell_area, &draw_rect) && (flags & GTK_CELL_RENDERER_PRELIT)) gtk_paint_shadow (style, |