diff --git a/docs/changes.txt b/docs/changes.txt index 2d108769d3..8fa6d43046 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -576,6 +576,7 @@ All (GUI): wxGTK: +- Fix horizontal mouse wheel scrolling (minoki). - Fix wxMenu::GetTitle() before the menu is appended to the bar (David Hart). wxMSW: diff --git a/src/gtk/window.cpp b/src/gtk/window.cpp index 14fe92ca24..81b957556c 100644 --- a/src/gtk/window.cpp +++ b/src/gtk/window.cpp @@ -1693,13 +1693,29 @@ window_scroll_event(GtkWidget*, GdkEventScroll* gdk_event, wxWindow* win) if (win->GTKProcessEvent(event)) return TRUE; - GtkRange *range = win->m_scrollBar[wxWindow::ScrollDir_Vert]; + GtkRange *range; + switch (gdk_event->direction) + { + case GDK_SCROLL_UP: + case GDK_SCROLL_DOWN: + range = win->m_scrollBar[wxWindow::ScrollDir_Vert]; + break; + + case GDK_SCROLL_LEFT: + case GDK_SCROLL_RIGHT: + range = win->m_scrollBar[wxWindow::ScrollDir_Horz]; + break; + + default: + return false; + } if (range && gtk_widget_get_visible(GTK_WIDGET(range))) { GtkAdjustment* adj = gtk_range_get_adjustment(range); double delta = gtk_adjustment_get_step_increment(adj) * 3; - if (gdk_event->direction == GDK_SCROLL_UP) + if (gdk_event->direction == GDK_SCROLL_UP || + gdk_event->direction == GDK_SCROLL_LEFT) delta = -delta; gtk_range_set_value(range, gtk_adjustment_get_value(adj) + delta);