diff options
author | Matthias Clasen <mclasen@redhat.com> | 2012-02-28 23:02:01 -0500 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2012-02-28 23:02:01 -0500 |
commit | ae57d75135c1a394964e84102aed3946588bd35a (patch) | |
tree | e8d2509b58bb43b7b922d6e39ea70518b0d7530c | |
parent | 0e1345590d5eb156f1e50de7ed2312afefadff1b (diff) | |
download | gtk+-smooth-scrolling-for-3.4.tar.gz |
range: Use the correct size for scalingsmooth-scrolling-for-3.4
When scaling the scroll delta, always use the 'large' dimension
of a range widget. When dx was 0, the code code accidentally
use the small dimension.
-rw-r--r-- | gtk/gtkrange.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/gtk/gtkrange.c b/gtk/gtkrange.c index 87a7f620b3..cdfd939622 100644 --- a/gtk/gtkrange.c +++ b/gtk/gtkrange.c @@ -2805,6 +2805,7 @@ _gtk_range_get_wheel_delta (GtkRange *range, gdouble dx, dy; gdouble delta; gdouble page_size; + gdouble size; page_size = gtk_adjustment_get_page_size (adjustment); @@ -2814,22 +2815,27 @@ _gtk_range_get_wheel_delta (GtkRange *range, gtk_widget_get_allocation (GTK_WIDGET (range), &allocation); + if (gtk_orientable_get_orientation (GTK_ORIENTABLE (range)) == GTK_ORIENTATION_HORIZONTAL) + size = allocation.width; + else + size = allocation.height; + if (dx != 0 && gtk_orientable_get_orientation (GTK_ORIENTABLE (range)) == GTK_ORIENTATION_HORIZONTAL) { if (GTK_IS_SCROLLBAR (range) && page_size > 0) - delta = dx * page_size / allocation.width; + delta = dx * page_size / size; else delta = dx * (gtk_adjustment_get_upper (adjustment) - - gtk_adjustment_get_lower (adjustment)) / allocation.width; + gtk_adjustment_get_lower (adjustment)) / size; } else { if (GTK_IS_SCROLLBAR (range) && page_size > 0) - delta = dy * page_size / allocation.height; + delta = dy * page_size / size; else delta = dy * (gtk_adjustment_get_upper (adjustment) - - gtk_adjustment_get_lower (adjustment)) / allocation.height; + gtk_adjustment_get_lower (adjustment)) / size; } } else |