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;
|