summaryrefslogtreecommitdiff
path: root/gtk/gtkbutton.c
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2014-06-24 13:21:05 -0400
committerMatthias Clasen <mclasen@redhat.com>2014-06-24 13:21:05 -0400
commitd09c458cedc1dc55599de6abb8978308c1b47dcc (patch)
treeea9c6ce28c1980e4d145ebc33032297cfafd7c09 /gtk/gtkbutton.c
parent545704401ed6d17b4145d54e97b45a11b32a42aa (diff)
downloadgtk+-d09c458cedc1dc55599de6abb8978308c1b47dcc.tar.gz
GtkButton: Queue a redraw on enter/leave
We currently getting a redraw for buttons, but that is just luck. Better to make it explicit.
Diffstat (limited to 'gtk/gtkbutton.c')
-rw-r--r--gtk/gtkbutton.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/gtk/gtkbutton.c b/gtk/gtkbutton.c
index b07d364637..ce4729b351 100644
--- a/gtk/gtkbutton.c
+++ b/gtk/gtkbutton.c
@@ -134,6 +134,7 @@ static void gtk_real_button_released (GtkButton * button);
static void gtk_real_button_clicked (GtkButton * button);
static void gtk_real_button_activate (GtkButton *button);
static void gtk_button_update_state (GtkButton *button);
+static void gtk_button_enter_leave (GtkButton *button);
static void gtk_button_add (GtkContainer *container,
GtkWidget *widget);
static GType gtk_button_child_type (GtkContainer *container);
@@ -237,8 +238,8 @@ gtk_button_class_init (GtkButtonClass *klass)
klass->pressed = gtk_real_button_pressed;
klass->released = gtk_real_button_released;
klass->clicked = NULL;
- klass->enter = gtk_button_update_state;
- klass->leave = gtk_button_update_state;
+ klass->enter = gtk_button_enter_leave;
+ klass->leave = gtk_button_enter_leave;
klass->activate = gtk_real_button_activate;
props[PROP_LABEL] =
@@ -2508,6 +2509,13 @@ _gtk_button_set_depressed (GtkButton *button,
}
static void
+gtk_button_enter_leave (GtkButton *button)
+{
+ gtk_button_update_state (button);
+ gtk_widget_queue_draw (GTK_WIDGET (button));
+}
+
+static void
gtk_button_update_state (GtkButton *button)
{
GtkButtonPrivate *priv = button->priv;