Horizontal wheel support in windows
Lorenzo Pistone
this patch adds support for the horizontal wheel in Windows. It is shamelessly copied off the vertical wheel code, but I guess that that is a value added in consistency.
--- a/src/video/windows/SDL_windowsevents.c Wed Nov 06 11:23:24 2013 -0300
+++ b/src/video/windows/SDL_windowsevents.c Wed Nov 06 23:35:08 2013 -0800
@@ -67,6 +67,9 @@
#ifndef WM_TOUCH
#define WM_TOUCH 0x0240
#endif
+#ifndef WM_MOUSEHWHEEL
+#define WM_MOUSEHWHEEL 0x020E
+#endif
static SDL_Scancode
WindowsScanCodeToSDLScanCode( LPARAM lParam, WPARAM wParam )
@@ -481,6 +484,25 @@
break;
}
+ case WM_MOUSEHWHEEL:
+ {
+ static short s_AccumulatedMotion;
+
+ s_AccumulatedMotion += GET_WHEEL_DELTA_WPARAM(wParam);
+ if (s_AccumulatedMotion > 0) {
+ while (s_AccumulatedMotion >= WHEEL_DELTA) {
+ SDL_SendMouseWheel(data->window, 0, 1, 0, timestamp);
+ s_AccumulatedMotion -= WHEEL_DELTA;
+ }
+ } else {
+ while (s_AccumulatedMotion <= -WHEEL_DELTA) {
+ SDL_SendMouseWheel(data->window, 0, -1, 0, timestamp);
+ s_AccumulatedMotion += WHEEL_DELTA;
+ }
+ }
+ break;
+ }
+
#ifdef WM_MOUSELEAVE
case WM_MOUSELEAVE:
if (SDL_GetMouseFocus() == data->window && !SDL_GetMouse()->relative_mode) {