diff options
author | Soeren Sandmann <sandmann@daimi.au.dk> | 2004-02-29 18:21:57 +0000 |
---|---|---|
committer | Søren Sandmann Pedersen <ssp@src.gnome.org> | 2004-02-29 18:21:57 +0000 |
commit | 41dfb5ec46ee3785a2cf1ae3a8919c49b9b5ee70 (patch) | |
tree | 9afe2267e10ee1064511b88db0c14070fe32e3ea /gtk/gtkscrolledwindow.c | |
parent | fc29c1a2fb70a70ff494e4e3b2bb11be7b5816dc (diff) | |
download | gtk+-41dfb5ec46ee3785a2cf1ae3a8919c49b9b5ee70.tar.gz |
New internal function returning a good step value for the mouse wheel. For
Sun Feb 29 19:04:33 2004 Soeren Sandmann <sandmann@daimi.au.dk>
* gtk/gtkrange.c (_gtk_range_get_wheel_delta): New internal
function returning a good step value for the mouse wheel. For
scrollbars, base the step on page_size^(2/3), for other ranges,
use 2 * step_increment.
* gtk/gtkrange.c (gtk_range_scroll_event): Use it here ...
* gtk/gtkscrolledwindow.c (gtk_scrolled_window_scroll_event):
... and here.
* gtk/gtkmenu.c (gtk_menu_leave_notify): Fix a warning.
Diffstat (limited to 'gtk/gtkscrolledwindow.c')
-rw-r--r-- | gtk/gtkscrolledwindow.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/gtk/gtkscrolledwindow.c b/gtk/gtkscrolledwindow.c index 067e0c1fb2..6b42c19209 100644 --- a/gtk/gtkscrolledwindow.c +++ b/gtk/gtkscrolledwindow.c @@ -24,6 +24,7 @@ * GTK+ at ftp://ftp.gtk.org/pub/gtk/. */ +#include <math.h> #include <gdk/gdkkeysyms.h> #include "gtkbindings.h" #include "gtkmarshalers.h" @@ -1226,14 +1227,12 @@ gtk_scrolled_window_scroll_event (GtkWidget *widget, if (range && GTK_WIDGET_VISIBLE (range)) { GtkAdjustment *adj = GTK_RANGE (range)->adjustment; - gdouble new_value; + gdouble delta, new_value; - if (event->direction == GDK_SCROLL_UP || event->direction == GDK_SCROLL_LEFT) - new_value = adj->value - adj->page_increment / 2; - else - new_value = adj->value + adj->page_increment / 2; + delta = _gtk_range_get_wheel_delta (GTK_RANGE (range), event->direction); - new_value = CLAMP (new_value, adj->lower, adj->upper - adj->page_size); + new_value = CLAMP (adj->value + delta, adj->lower, adj->upper - adj->page_size); + gtk_adjustment_set_value (adj, new_value); return TRUE; |