From: John Darrington Date: Mon, 27 May 2013 12:19:43 +0000 (+0200) Subject: PsppWidgetFacade and PsppCellRender: Update to Gtk3 paint functions X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=34e954c88e221ee1f38ea1ac8af1d1933b536097;p=pspp PsppWidgetFacade and PsppCellRender: Update to Gtk3 paint functions --- diff --git a/src/ui/gui/pspp-widget-facade.c b/src/ui/gui/pspp-widget-facade.c index cae55ab12a..08f6572110 100644 --- a/src/ui/gui/pspp-widget-facade.c +++ b/src/ui/gui/pspp-widget-facade.c @@ -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); } diff --git a/src/ui/gui/pspp-widget-facade.h b/src/ui/gui/pspp-widget-facade.h index 38460459c1..4bbf1540e2 100644 --- a/src/ui/gui/pspp-widget-facade.h +++ b/src/ui/gui/pspp-widget-facade.h @@ -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, diff --git a/src/ui/gui/psppire-cell-renderer-button.c b/src/ui/gui/psppire-cell-renderer-button.c index e81180c469..c26849deae 100644 --- a/src/ui/gui/psppire-cell-renderer-button.c +++ b/src/ui/gui/psppire-cell-renderer-button.c @@ -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