]> www.fi.muni.cz Git - evince.git/blobdiff - cut-n-paste/gimpcellrenderertoggle/gimpcellrenderertoggle.c
[gimpcellrenderertoggle] Fix compile warnings
[evince.git] / cut-n-paste / gimpcellrenderertoggle / gimpcellrenderertoggle.c
index bfe5d220667325b510290b02f957d5c98522dc1d..55ef910133ee9116ec5ce5a6339bf2da1695eafb 100644 (file)
@@ -54,7 +54,7 @@ static void gimp_cell_renderer_toggle_set_property (GObject         *object,
                                                     GParamSpec      *pspec);
 static void gimp_cell_renderer_toggle_get_size     (GtkCellRenderer *cell,
                                                     GtkWidget       *widget,
-                                                    GdkRectangle    *rectangle,
+                                                    const GdkRectangle *rectangle,
                                                     gint            *x_offset,
                                                     gint            *y_offset,
                                                     gint            *width,
@@ -69,8 +69,8 @@ static gboolean gimp_cell_renderer_toggle_activate (GtkCellRenderer *cell,
                                                     GdkEvent        *event,
                                                     GtkWidget       *widget,
                                                     const gchar     *path,
-                                                    GdkRectangle    *background_area,
-                                                    GdkRectangle    *cell_area,
+                                                    const GdkRectangle *background_area,
+                                                    const GdkRectangle *cell_area,
                                                     GtkCellRendererState  flags);
 static void gimp_cell_renderer_toggle_create_pixbuf (GimpCellRendererToggle *toggle,
                                                      GtkWidget              *widget);
@@ -206,13 +206,13 @@ gimp_cell_renderer_toggle_set_property (GObject      *object,
 }
 
 static void
-gimp_cell_renderer_toggle_get_size (GtkCellRenderer *cell,
-                                    GtkWidget       *widget,
-                                    GdkRectangle    *cell_area,
-                                    gint            *x_offset,
-                                    gint            *y_offset,
-                                    gint            *width,
-                                    gint            *height)
+gimp_cell_renderer_toggle_get_size (GtkCellRenderer    *cell,
+                                    GtkWidget          *widget,
+                                    const GdkRectangle *cell_area,
+                                    gint               *x_offset,
+                                    gint               *y_offset,
+                                    gint               *width,
+                                    gint               *height)
 {
   GimpCellRendererToggle *toggle = GIMP_CELL_RENDERER_TOGGLE (cell);
   GtkStyle               *style  = gtk_widget_get_style (widget);
@@ -285,6 +285,7 @@ gimp_cell_renderer_toggle_render (GtkCellRenderer      *cell,
   GtkStyle               *style  = gtk_widget_get_style (widget);
   GdkRectangle            toggle_rect;
   GdkRectangle            draw_rect;
+  GdkRectangle            clip_rect;
   GtkStateType            state;
   gboolean                active;
   gint                    xpad;
@@ -338,6 +339,23 @@ gimp_cell_renderer_toggle_render (GtkCellRenderer      *cell,
         state = GTK_STATE_INSENSITIVE;
     }
 
+  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);
+    }
+
   if (active)
     {
       GdkPixbuf *insensitive = NULL;
@@ -392,8 +410,8 @@ gimp_cell_renderer_toggle_activate (GtkCellRenderer      *cell,
                                     GdkEvent             *event,
                                     GtkWidget            *widget,
                                     const gchar          *path,
-                                    GdkRectangle         *background_area,
-                                    GdkRectangle         *cell_area,
+                                    const GdkRectangle   *background_area,
+                                    const GdkRectangle   *cell_area,
                                     GtkCellRendererState  flags)
 {
   GtkCellRendererToggle *toggle = GTK_CELL_RENDERER_TOGGLE (cell);