X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fpsppire-cell-renderer-button.c;h=5a20ff5a8df8d039acaf3050cad37ac09c5fde93;hb=refs%2Fbuilds%2F20140106033045%2Fpspp;hp=aa7164d01f3bb726dffe9e1586baa974933f06b3;hpb=c58e26cd4cc945718f9f1e7dffa1100e89032ce6;p=pspp diff --git a/src/ui/gui/psppire-cell-renderer-button.c b/src/ui/gui/psppire-cell-renderer-button.c index aa7164d01f..5a20ff5a8d 100644 --- a/src/ui/gui/psppire-cell-renderer-button.c +++ b/src/ui/gui/psppire-cell-renderer-button.c @@ -70,15 +70,14 @@ psppire_cell_renderer_button_set_property (GObject *object, GParamSpec *pspec) { PsppireCellRendererButton *obj = PSPPIRE_CELL_RENDERER_BUTTON (object); - switch (prop_id) { case PROP_EDITABLE: obj->editable = g_value_get_boolean (value); if (obj->editable) - GTK_CELL_RENDERER (obj)->mode = GTK_CELL_RENDERER_MODE_EDITABLE; + g_object_set (obj, "mode", GTK_CELL_RENDERER_MODE_EDITABLE, NULL); else - GTK_CELL_RENDERER (obj)->mode = GTK_CELL_RENDERER_MODE_INERT; + g_object_set (obj, "mode", GTK_CELL_RENDERER_MODE_INERT, NULL); break; case PROP_LABEL: @@ -182,17 +181,17 @@ update_style_cache (PsppireCellRendererButton *button, static void psppire_cell_renderer_button_render (GtkCellRenderer *cell, - GdkDrawable *window, + cairo_t *cr, GtkWidget *widget, - GdkRectangle *background_area, - GdkRectangle *cell_area, - GdkRectangle *expose_area, + const GdkRectangle *background_area, + const GdkRectangle *cell_area, GtkCellRendererState flags) { - PsppireCellRendererButton *button = PSPPIRE_CELL_RENDERER_BUTTON (cell); GtkStateType state_type; - - if (!button->editable || !cell->sensitive) + PsppireCellRendererButton *button = PSPPIRE_CELL_RENDERER_BUTTON (cell); + gfloat xalign, yalign; + + if (!button->editable || ! gtk_cell_renderer_get_sensitive (cell)) state_type = GTK_STATE_INSENSITIVE; else if (flags & GTK_CELL_RENDERER_SELECTED) { @@ -211,17 +210,19 @@ psppire_cell_renderer_button_render (GtkCellRenderer *cell, state_type = GTK_STATE_NORMAL; } + gtk_cell_renderer_get_alignment (cell, &xalign, &yalign); + + update_style_cache (button, widget); - facade_button_render (widget, window, expose_area, + + facade_button_render (widget, cr, cell_area, button->border_width, button->button_style, state_type, button->label_style, button->label, button->xpad, - button->ypad, cell->xalign, cell->yalign); + button->ypad, xalign, yalign); 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, @@ -238,7 +239,7 @@ psppire_cell_renderer_button_render (GtkCellRenderer *cell, static void psppire_cell_renderer_button_get_size (GtkCellRenderer *cell, GtkWidget *widget, - GdkRectangle *cell_area, + const GdkRectangle *cell_area, gint *x_offset, gint *y_offset, gint *width, @@ -403,8 +404,8 @@ psppire_cell_renderer_button_start_editing (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) { PsppireCellRendererButton *cell_button = PSPPIRE_CELL_RENDERER_BUTTON (cell);