}
}
-void
-_gtk_button_paint (GtkButton *button,
- cairo_t *cr,
- int width,
- int height,
- GtkStateFlags state)
+static gboolean
+gtk_button_draw (GtkWidget *widget,
+ cairo_t *cr)
{
+ GtkButton *button = GTK_BUTTON (widget);
GtkButtonPrivate *priv = button->priv;
- GtkWidget *widget;
gint x, y;
GtkBorder default_border;
GtkBorder default_outside_border;
gint focus_pad;
GtkAllocation allocation;
GtkStyleContext *context;
+ GtkStateFlags state;
gboolean draw_focus;
+ gint width, height;
- widget = GTK_WIDGET (button);
context = gtk_widget_get_style_context (widget);
-
- gtk_style_context_save (context);
- gtk_style_context_set_state (context, state);
+ state = gtk_style_context_get_state (context);
gtk_button_get_props (button, &default_border, &default_outside_border, NULL, NULL, &interior_focus);
gtk_style_context_get_style (context,
x = 0;
y = 0;
+ width = allocation.width;
+ height = allocation.height;
if (gtk_widget_has_default (widget) &&
priv->relief == GTK_RELIEF_NORMAL)
gtk_render_focus (context, cr, x, y, width, height);
}
- gtk_style_context_restore (context);
-}
-
-static gboolean
-gtk_button_draw (GtkWidget *widget,
- cairo_t *cr)
-{
- GtkButton *button = GTK_BUTTON (widget);
-
- _gtk_button_paint (button, cr,
- gtk_widget_get_allocated_width (widget),
- gtk_widget_get_allocated_height (widget),
- gtk_widget_get_state_flags (widget));
-
GTK_WIDGET_CLASS (gtk_button_parent_class)->draw (widget, cr);
return FALSE;
};
-static gint gtk_toggle_button_draw (GtkWidget *widget,
- cairo_t *cr);
static gboolean gtk_toggle_button_mnemonic_activate (GtkWidget *widget,
gboolean group_cycling);
static void gtk_toggle_button_pressed (GtkButton *button);
gobject_class->set_property = gtk_toggle_button_set_property;
gobject_class->get_property = gtk_toggle_button_get_property;
- widget_class->draw = gtk_toggle_button_draw;
widget_class->mnemonic_activate = gtk_toggle_button_mnemonic_activate;
button_class->pressed = gtk_toggle_button_pressed;
return toggle_button->priv->inconsistent;
}
-static gint
-gtk_toggle_button_draw (GtkWidget *widget,
- cairo_t *cr)
-{
- GtkToggleButton *toggle_button = GTK_TOGGLE_BUTTON (widget);
- GtkToggleButtonPrivate *priv = toggle_button->priv;
- GtkWidget *child = gtk_bin_get_child (GTK_BIN (widget));
- GtkButton *button = GTK_BUTTON (widget);
- GtkStateType state;
-
- state = gtk_widget_get_state_flags (widget);
-
- if (priv->inconsistent)
- state |= GTK_STATE_FLAG_INCONSISTENT;
- else if (button->priv->depressed)
- state |= GTK_STATE_FLAG_ACTIVE;
-
- _gtk_button_paint (button, cr,
- gtk_widget_get_allocated_width (widget),
- gtk_widget_get_allocated_height (widget),
- state);
-
- if (child)
- gtk_container_propagate_draw (GTK_CONTAINER (widget), child, cr);
-
- return FALSE;
-}
-
static gboolean
gtk_toggle_button_mnemonic_activate (GtkWidget *widget,
gboolean group_cycling)