void
facade_button_render (GtkWidget *base,
- GdkWindow *window,
+ cairo_t *cr,
GdkRectangle *expose_area,
GdkRectangle *button_area,
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,
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);
}
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;
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,
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,
cell_area->y);
cairo_stroke (cr);
}
+
+ cairo_destroy (cr);
}
static void