6bdd276d05
Former-commit-id: fd56571888259555122d8a0f58c68838229cea2b
48 lines
1.3 KiB
Diff
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;
|