48 lines
1.3 KiB
Diff
Raw Normal View History

diff --git a/gtk/gtkmenu.c b/gtk/gtkmenu.c
index fc25098..de9a4b0 100644
--- a/gtk/gtkmenu.c
+++ b/gtk/gtkmenu.c
@@ -55,6 +55,7 @@
#define MENU_SCROLL_FAST_ZONE 8
#define MENU_SCROLL_TIMEOUT1 50
#define MENU_SCROLL_TIMEOUT2 20
+#define GTK_SCROLL_STEP_SMOOTH 2
#define ATTACH_INFO_KEY "gtk-menu-child-attach-info-key"
#define ATTACHED_MENUS "gtk-attached-menus"
@@ -3504,17 +3505,25 @@ gtk_menu_scroll (GtkWidget *widget,
GdkEventScroll *event)
{
GtkMenu *menu = GTK_MENU (widget);
+ gdouble dx, dy;
- switch (event->direction)
+ if (gdk_event_get_scroll_deltas ((GdkEvent *) event, &dx, &dy))
{
- case GDK_SCROLL_RIGHT:
- case GDK_SCROLL_DOWN:
- gtk_menu_scroll_by (menu, MENU_SCROLL_STEP2);
- break;
- case GDK_SCROLL_LEFT:
- case GDK_SCROLL_UP:
- gtk_menu_scroll_by (menu, - MENU_SCROLL_STEP2);
- break;
+ gtk_menu_scroll_by (menu, GTK_SCROLL_STEP_SMOOTH * dy);
+ }
+ else
+ {
+ switch (event->direction)
+ {
+ case GDK_SCROLL_RIGHT:
+ case GDK_SCROLL_DOWN:
+ gtk_menu_scroll_by (menu, MENU_SCROLL_STEP2);
+ break;
+ case GDK_SCROLL_LEFT:
+ case GDK_SCROLL_UP:
+ gtk_menu_scroll_by (menu, - MENU_SCROLL_STEP2);
+ break;
+ }
}
return TRUE;