[gtk+] range: Only call needed functions from adjustment changes
- From: Benjamin Otte <otte src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] range: Only call needed functions from adjustment changes
- Date: Sat, 29 Nov 2014 03:10:01 +0000 (UTC)
commit 87c564ecf3ebc5b065b13c997ec4347f86bf885a
Author: Benjamin Otte <otte redhat com>
Date: Sat Nov 29 02:39:47 2014 +0100
range: Only call needed functions from adjustment changes
No need to recalc the whole range when all that changed was the slider.
gtk/gtkrange.c | 45 +++++----------------------------------------
1 files changed, 5 insertions(+), 40 deletions(-)
---
diff --git a/gtk/gtkrange.c b/gtk/gtkrange.c
index 3e2014f..3b6def5 100644
--- a/gtk/gtkrange.c
+++ b/gtk/gtkrange.c
@@ -2950,46 +2950,14 @@ gtk_range_event (GtkWidget *widget,
return GDK_EVENT_PROPAGATE;
}
-#define check_rectangle(rectangle1, rectangle2) \
- { \
- if (rectangle1.x != rectangle2.x) return TRUE; \
- if (rectangle1.y != rectangle2.y) return TRUE; \
- if (rectangle1.width != rectangle2.width) return TRUE; \
- if (rectangle1.height != rectangle2.height) return TRUE; \
- }
-
-static gboolean
-layout_changed (GtkRangePrivate *priv1,
- GtkRangePrivate *priv2)
-{
- check_rectangle (priv1->slider, priv2->slider);
- check_rectangle (priv1->trough, priv2->trough);
- check_rectangle (priv1->stepper_a, priv2->stepper_a);
- check_rectangle (priv1->stepper_d, priv2->stepper_d);
- check_rectangle (priv1->stepper_b, priv2->stepper_b);
- check_rectangle (priv1->stepper_c, priv2->stepper_c);
-
- if (priv1->upper_sensitive != priv2->upper_sensitive) return TRUE;
- if (priv1->lower_sensitive != priv2->lower_sensitive) return TRUE;
-
- return FALSE;
-}
-
static void
gtk_range_adjustment_changed (GtkAdjustment *adjustment,
gpointer data)
{
GtkRange *range = GTK_RANGE (data);
- GtkRangePrivate *priv = range->priv;
- GtkRangePrivate priv_aux = *priv;
-
- priv->recalc_marks = TRUE;
- priv->need_recalc = TRUE;
- gtk_range_calc_layout (range);
- /* now check whether the layout changed */
- if (layout_changed (priv, &priv_aux))
- gtk_widget_queue_draw (GTK_WIDGET (range));
+ gtk_range_calc_slider (range);
+ gtk_range_calc_stepper_sensitivity (range);
/* Note that we don't round off to priv->round_digits here.
* that's because it's really broken to change a value
@@ -3005,15 +2973,12 @@ gtk_range_adjustment_value_changed (GtkAdjustment *adjustment,
gpointer data)
{
GtkRange *range = GTK_RANGE (data);
- GtkRangePrivate *priv = range->priv;
- GtkRangePrivate priv_aux = *priv;
- priv->need_recalc = TRUE;
- gtk_range_calc_layout (range);
+ gtk_range_calc_slider (range);
+ gtk_range_calc_stepper_sensitivity (range);
/* now check whether the layout changed */
- if (layout_changed (priv, &priv_aux) ||
- (GTK_IS_SCALE (range) && gtk_scale_get_draw_value (GTK_SCALE (range))))
+ if (GTK_IS_SCALE (range) && gtk_scale_get_draw_value (GTK_SCALE (range)))
{
gtk_widget_queue_draw (GTK_WIDGET (range));
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]