From c1bc521e92488a99855db770deee0ea2f6c2f70a Mon Sep 17 00:00:00 2001 From: Michael Natterer Date: Sat, 5 Feb 2011 23:42:37 +0100 Subject: [PATCH] gtk: get rid of two cases of invalidating the spinbutton when not needed --- gtk/gtkspinbutton.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/gtk/gtkspinbutton.c b/gtk/gtkspinbutton.c index 729cc8933e..b1cbf798c4 100644 --- a/gtk/gtkspinbutton.c +++ b/gtk/gtkspinbutton.c @@ -232,7 +232,7 @@ static void gtk_spin_button_draw_arrow (GtkSpinButton *spin_button, cairo_t *cr, GtkArrowType arrow_type); static gboolean gtk_spin_button_timer (GtkSpinButton *spin_button); -static void gtk_spin_button_stop_spinning (GtkSpinButton *spin); +static gboolean gtk_spin_button_stop_spinning (GtkSpinButton *spin); static void gtk_spin_button_value_changed (GtkAdjustment *adjustment, GtkSpinButton *spin_button); static gint gtk_spin_button_key_release (GtkWidget *widget, @@ -1155,8 +1155,8 @@ gtk_spin_button_grab_notify (GtkWidget *widget, if (!was_grabbed) { - gtk_spin_button_stop_spinning (spin); - gtk_widget_queue_draw (GTK_WIDGET (spin)); + if (gtk_spin_button_stop_spinning (spin)) + gtk_widget_queue_draw (GTK_WIDGET (spin)); } } @@ -1168,8 +1168,8 @@ gtk_spin_button_state_flags_changed (GtkWidget *widget, if (!gtk_widget_is_sensitive (widget)) { - gtk_spin_button_stop_spinning (spin); - gtk_widget_queue_draw (GTK_WIDGET (spin)); + if (gtk_spin_button_stop_spinning (spin)) + gtk_widget_queue_draw (GTK_WIDGET (spin)); } } @@ -1216,26 +1216,28 @@ gtk_spin_button_scroll (GtkWidget *widget, return TRUE; } -static void +static gboolean gtk_spin_button_stop_spinning (GtkSpinButton *spin) { GtkSpinButtonPrivate *priv = spin->priv; + gboolean did_spin = FALSE; if (priv->timer) { g_source_remove (priv->timer); priv->timer = 0; - priv->timer_calls = 0; priv->need_timer = FALSE; + + did_spin = TRUE; } priv->button = 0; - priv->timer = 0; priv->timer_step = gtk_adjustment_get_step_increment (priv->adjustment); priv->timer_calls = 0; priv->click_child = NO_ARROW; - priv->button = 0; + + return did_spin; } static void