[gtk+] range: Straighten the wheel delta calculation
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] range: Straighten the wheel delta calculation
- Date: Mon, 5 Mar 2012 00:20:36 +0000 (UTC)
commit 5714454a736794dbe8aa61ab4258e73ea8a98595
Author: Matthias Clasen <mclasen redhat com>
Date: Sun Mar 4 19:15:32 2012 -0500
range: Straighten the wheel delta calculation
Scroll events report normalized deltas in terms of an abstract
'scroll unit' now, so our job is to determine a suitable scroll
unit here. Since we are changing the value of the adjustment,
the allocation of the widget does not factor into this at all.
gtk/gtkrange.c | 51 +++++++++++++++++----------------------------------
1 files changed, 17 insertions(+), 34 deletions(-)
---
diff --git a/gtk/gtkrange.c b/gtk/gtkrange.c
index d9acee8..e384aaa 100644
--- a/gtk/gtkrange.c
+++ b/gtk/gtkrange.c
@@ -2788,11 +2788,11 @@ gtk_range_button_release (GtkWidget *widget,
* _gtk_range_get_wheel_delta:
* @range: a #GtkRange
* @event: A #GdkEventScroll
- *
+ *
* Returns a good step value for the mouse wheel.
- *
- * Return value: A good step value for the mouse wheel.
- *
+ *
+ * Return value: A good step value for the mouse wheel.
+ *
* Since: 2.4
**/
gdouble
@@ -2804,49 +2804,32 @@ _gtk_range_get_wheel_delta (GtkRange *range,
gdouble dx, dy;
gdouble delta;
gdouble page_size;
- gdouble size;
+ gdouble page_increment;
+ gdouble scroll_unit;
page_size = gtk_adjustment_get_page_size (adjustment);
+ page_increment = gtk_adjustment_get_page_increment (adjustment);
+
+ if (GTK_IS_SCROLLBAR (range))
+ scroll_unit = pow (page_size, 2.0 / 3.0);
+ else
+ scroll_unit = page_increment;
if (gdk_event_get_scroll_deltas ((GdkEvent *) event, &dx, &dy))
{
- GtkAllocation allocation;
-
- 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 / size;
- else
- delta = dx * (gtk_adjustment_get_upper (adjustment) -
- gtk_adjustment_get_lower (adjustment)) / size;
- }
+ delta = dx * scroll_unit;
else
- {
- if (GTK_IS_SCROLLBAR (range) && page_size > 0)
- delta = dy * page_size / size;
- else
- delta = dy * (gtk_adjustment_get_upper (adjustment) -
- gtk_adjustment_get_lower (adjustment)) / size;
- }
+ delta = dy * scroll_unit;
}
else
{
- if (GTK_IS_SCROLLBAR (range))
- delta = pow (page_size, 2.0 / 3.0);
- else
- delta = gtk_adjustment_get_page_increment (adjustment) * 2;
-
if (event->direction == GDK_SCROLL_UP ||
event->direction == GDK_SCROLL_LEFT)
- delta = - delta;
+ delta = - scroll_unit;
+ else
+ delta = scroll_unit;
}
if (priv->inverted)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]