Sfoglia il codice sorgente

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.
Sam Lantinga 12 anni fa
parent
commit
3b050fc953
1 ha cambiato i file con 22 aggiunte e 0 eliminazioni
  1. 22 0
      src/video/windows/SDL_windowsevents.c

+ 22 - 0
src/video/windows/SDL_windowsevents.c

@@ -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 @@ WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
             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) {