From 6ba718d7aee2f519d9146b90424ccec9e2243479 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Fri, 6 Sep 2013 00:20:06 +0000 Subject: [PATCH] Fix horizontal mouse wheel scrolling in wxGTK. Change the value of the appropriate adjustment instead of always using the vertical one. Closes #15469. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74764 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- docs/changes.txt | 1 + src/gtk/window.cpp | 20 ++++++++++++++++++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 2d10876..8fa6d43 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 14fe92c..81b9575 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); -- 2.7.4