From b9e52a19e67d5bfeffcfefabf1c36f14fa34c343 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Thu, 22 Mar 2012 00:27:02 +0000 Subject: [PATCH] Implement horizontal mouse wheel events support for wxMSW. Handle WM_MOUSEHWHEEL messages and translate them to the corresponding wxMouseEvents. Closes #14105. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70962 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- docs/changes.txt | 1 + include/wx/msw/missing.h | 3 +++ include/wx/msw/window.h | 3 ++- src/msw/window.cpp | 13 ++++++++++--- 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index c6691168a9..cebec5ae5b 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -513,6 +513,7 @@ MSW: - Add wxActiveXContainer::QueryClientSiteInterface and implement it in wxWebViewIE to improve the default behaviour (Allonii). - Update stretchable spaces in wxToolBar after tool removal (Catalin Raceanu). +- Add support for horizontal mouse wheel events (Lauri Nurmi). OSX: diff --git a/include/wx/msw/missing.h b/include/wx/msw/missing.h index ded2d2b101..cf7602e817 100644 --- a/include/wx/msw/missing.h +++ b/include/wx/msw/missing.h @@ -77,6 +77,9 @@ #ifndef WM_MOUSEWHEEL #define WM_MOUSEWHEEL 0x020A #endif + #ifndef WM_MOUSEHWHEEL + #define WM_MOUSEHWHEEL 0x020E + #endif #ifndef WHEEL_DELTA #define WHEEL_DELTA 120 #endif diff --git a/include/wx/msw/window.h b/include/wx/msw/window.h index 6526461c31..b465d05814 100644 --- a/include/wx/msw/window.h +++ b/include/wx/msw/window.h @@ -345,7 +345,8 @@ public: bool HandleMouseEvent(WXUINT msg, int x, int y, WXUINT flags); bool HandleMouseMove(int x, int y, WXUINT flags); - bool HandleMouseWheel(WXWPARAM wParam, WXLPARAM lParam); + bool HandleMouseWheel(wxMouseWheelAxis axis, + WXWPARAM wParam, WXLPARAM lParam); bool HandleChar(WXWPARAM wParam, WXLPARAM lParam); bool HandleKeyDown(WXWPARAM wParam, WXLPARAM lParam); diff --git a/src/msw/window.cpp b/src/msw/window.cpp index 1c5eda4dfb..44af1d50be 100644 --- a/src/msw/window.cpp +++ b/src/msw/window.cpp @@ -2898,9 +2898,13 @@ wxWindowMSW::MSWHandleMessage(WXLRESULT *result, #if wxUSE_MOUSEWHEEL case WM_MOUSEWHEEL: - processed = HandleMouseWheel(wParam, lParam); + processed = HandleMouseWheel(wxMOUSE_WHEEL_VERTICAL, wParam, lParam); break; -#endif + + case WM_MOUSEHWHEEL: + processed = HandleMouseWheel(wxMOUSE_WHEEL_HORIZONTAL, wParam, lParam); + break; +#endif // wxUSE_MOUSEWHEEL case WM_LBUTTONDOWN: case WM_LBUTTONUP: @@ -5551,7 +5555,9 @@ bool wxWindowMSW::HandleMouseMove(int x, int y, WXUINT flags) } -bool wxWindowMSW::HandleMouseWheel(WXWPARAM wParam, WXLPARAM lParam) +bool +wxWindowMSW::HandleMouseWheel(wxMouseWheelAxis axis, + WXWPARAM wParam, WXLPARAM lParam) { #if wxUSE_MOUSEWHEEL // notice that WM_MOUSEWHEEL position is in screen coords (as it's @@ -5564,6 +5570,7 @@ bool wxWindowMSW::HandleMouseWheel(WXWPARAM wParam, WXLPARAM lParam) InitMouseEvent(event, pt.x, pt.y, LOWORD(wParam)); event.m_wheelRotation = (short)HIWORD(wParam); event.m_wheelDelta = WHEEL_DELTA; + event.m_wheelAxis = axis; static int s_linesPerRotation = -1; if ( s_linesPerRotation == -1 ) -- 2.45.2