]> git.saurik.com Git - wxWidgets.git/commitdiff
Implement horizontal mouse wheel events support for wxMSW.
authorVadim Zeitlin <vadim@wxwidgets.org>
Thu, 22 Mar 2012 00:27:02 +0000 (00:27 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Thu, 22 Mar 2012 00:27:02 +0000 (00:27 +0000)
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
include/wx/msw/missing.h
include/wx/msw/window.h
src/msw/window.cpp

index c6691168a97cb7d8d164127113db02c21aa86e7e..cebec5ae5b7cc5320c65d64ac487f9b9afb265d0 100644 (file)
@@ -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:
 
index ded2d2b101161d7dc8f852ed016c453dd05aef1d..cf7602e8175cda293ae8a55b94b1bc0d06e47ba2 100644 (file)
@@ -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
index 6526461c31b178f6099f099c032f0be43607cb44..b465d05814e35d226364759208f0b42c7cb1a6b3 100644 (file)
@@ -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);
index 1c5eda4dfb85e9116cd93fcaa2cb043f439ee6a3..44af1d50bea4acc6f0ecf763edcadd79035a5a5c 100644 (file)
@@ -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 )