]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/window.cpp
removed useless assert from wxArray::Alloc
[wxWidgets.git] / src / msw / window.cpp
index dadffe9b6af176b29eec0ba93893a43c73e567de..67b1e4d3210d5c5402b809d32aee163411b4691a 100644 (file)
 #if wxUSE_MOUSEWHEEL
     #ifndef WM_MOUSEWHEEL
         #define WM_MOUSEWHEEL           0x020A
+    #endif
+    #ifndef WHEEL_DELTA
         #define WHEEL_DELTA             120
+    #endif
+    #ifndef SPI_GETWHEELSCROLLLINES
         #define SPI_GETWHEELSCROLLLINES 104
     #endif
 #endif
@@ -3371,16 +3375,31 @@ bool wxWindow::HandleMouseWheel(WXWPARAM wParam, WXLPARAM lParam)
                    GET_X_LPARAM(lParam),
                    GET_Y_LPARAM(lParam),
                    LOWORD(wParam));
-
     event.m_wheelRotation = (short)HIWORD(wParam);
     event.m_wheelDelta = WHEEL_DELTA;
 
-    int linesPer;
-    if (!SystemParametersInfo(SPI_GETWHEELSCROLLLINES, 0, &linesPer, 0))
-        linesPer = 1;
-    event.m_linesPerAction = linesPer;
+#ifdef __WIN32__
+    static int s_linesPerRotation = -1;
+    if ( s_linesPerRotation == -1 )
+    {
+        if ( !::SystemParametersInfo(SPI_GETWHEELSCROLLLINES, 0,
+                                     &s_linesPerRotation, 0))
+        {
+            // this is not supposed to happen
+            wxLogLastError(_T("SystemParametersInfo(GETWHEELSCROLLLINES)"));
+
+            // the default is 3, so use it if SystemParametersInfo() failed
+            s_linesPerRotation = 3;
+        }
+    }
+#else // Win16
+    // no SystemParametersInfo() under Win16
+    static const int s_linesPerRotation = 3;
+#endif
 
+    event.m_linesPerAction = s_linesPerRotation;
     return GetEventHandler()->ProcessEvent(event);
+
 #else
     return FALSE;
 #endif