PsppWidgetFacade and PsppCellRender: Update to Gtk3 paint functions
authorJohn Darrington <john@darrington.wattle.id.au>
Mon, 27 May 2013 12:19:43 +0000 (14:19 +0200)
committerJohn Darrington <john@darrington.wattle.id.au>
Wed, 29 May 2013 04:57:26 +0000 (06:57 +0200)
src/ui/gui/pspp-widget-facade.c
src/ui/gui/pspp-widget-facade.h
src/ui/gui/psppire-cell-renderer-button.c

index cae55ab12a9494e6f37f7ee8ccdd9a6cfe8c6076..08f6572110d70972a53cbf7e94870cc3997b4aa3 100644 (file)
@@ -313,7 +313,7 @@ get_layout_location (GtkWidget *base,
 
 void
 facade_button_render (GtkWidget *base,
-                      GdkWindow   *window,
+                      cairo_t *cr,
                       GdkRectangle *expose_area,
 
                       GdkRectangle *button_area,
@@ -334,9 +334,9 @@ facade_button_render (GtkWidget *base,
   gint x, y;
 
   /* Paint the button. */
-  gtk_paint_box (button_style, window,
+  gtk_paint_box (button_style, cr,
                  state_type,
-                 GTK_SHADOW_OUT, expose_area, base, "button",
+                 GTK_SHADOW_OUT, base, "button",
                  button_area->x + border_width,
                  button_area->y + border_width,
                  button_area->width - border_width * 2,
@@ -350,8 +350,10 @@ facade_button_render (GtkWidget *base,
   layout = facade_label_get_layout (base, label);
   get_layout_location (base, &label_area, layout, xpad, ypad, xalign, yalign,
                        &x, &y);
-  gtk_paint_layout (label_style, window, state_type, FALSE, expose_area,
+
+  gtk_paint_layout (label_style, cr, state_type, FALSE, 
                     base, "label", x, y, layout);
+
   g_object_unref (layout);
 }
 
index 38460459c142d6cd803d5458afaf73c7da8063ed..4bbf1540e2c48a4ac1985843132d222c093ea535 100644 (file)
@@ -63,7 +63,7 @@ void facade_button_get_size_request (gint border_width,
                                      const GtkRequisition *child_request,
                                      GtkRequisition *);
 void facade_button_render (GtkWidget *base,
-                           GdkWindow *window,
+                           cairo_t *cr,
                            GdkRectangle *expose_area,
 
                            GdkRectangle *button_area,
index e81180c469f9fb6223065d31ffb657852a98842a..c26849deae50b9dbbaa188e0d738d29e5e4e8ffd 100644 (file)
@@ -191,6 +191,7 @@ psppire_cell_renderer_button_render (GtkCellRenderer      *cell,
   GtkStateType state_type;
   PsppireCellRendererButton *button = PSPPIRE_CELL_RENDERER_BUTTON (cell);
   gfloat xalign, yalign;
+  cairo_t *cr ;
   
   if (!button->editable || ! gtk_cell_renderer_get_sensitive (cell))
     state_type = GTK_STATE_INSENSITIVE;
@@ -213,8 +214,11 @@ psppire_cell_renderer_button_render (GtkCellRenderer      *cell,
 
   gtk_cell_renderer_get_alignment (cell, &xalign, &yalign);
 
+
   update_style_cache (button, widget);
-  facade_button_render (widget, window, expose_area,
+
+  cr = gdk_cairo_create (window);
+  facade_button_render (widget, cr, expose_area,
                         cell_area, button->border_width, button->button_style,
                         state_type,
                         button->label_style, button->label, button->xpad,
@@ -222,8 +226,6 @@ psppire_cell_renderer_button_render (GtkCellRenderer      *cell,
 
   if (button->slash)
     {
-      cairo_t *cr = gdk_cairo_create (window);
-
       cairo_set_line_width (cr, 1.0);
       cairo_set_line_cap (cr, CAIRO_LINE_CAP_SQUARE);
       cairo_move_to (cr, 
@@ -235,6 +237,8 @@ psppire_cell_renderer_button_render (GtkCellRenderer      *cell,
                     cell_area->y);
       cairo_stroke (cr);
     }
+
+  cairo_destroy (cr);
 }
 
 static void