Xamarin Public Jenkins (auto-signing) 6bdd276d05 Imported Upstream version 5.0.0.42
Former-commit-id: fd56571888259555122d8a0f58c68838229cea2b
2017-04-10 11:41:01 +00:00

48 lines
1.3 KiB
Diff

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;