Mousewheel support.
diff --git a/dlls/comctl32/treeview.c b/dlls/comctl32/treeview.c
index e7f8c28..6d3ee44 100644
--- a/dlls/comctl32/treeview.c
+++ b/dlls/comctl32/treeview.c
@@ -3479,6 +3479,33 @@
return TRUE;
}
+static LRESULT TREEVIEW_MouseWheel (HWND hwnd, WPARAM wParam, LPARAM lParam)
+{
+
+ TREEVIEW_INFO *infoPtr = TREEVIEW_GetInfoPtr(hwnd);
+ short gcWheelDelta = 0;
+ UINT pulScrollLines = 3;
+
+ SystemParametersInfoW(SPI_GETWHEELSCROLLLINES,0, &pulScrollLines, 0);
+
+ gcWheelDelta -= (short) HIWORD(wParam);
+ pulScrollLines *= (gcWheelDelta / WHEEL_DELTA);
+
+ if (abs(gcWheelDelta) >= WHEEL_DELTA && pulScrollLines)
+ {
+ int wheelDy = pulScrollLines * infoPtr->uRealItemHeight;
+ int newDy = infoPtr->cy + wheelDy;
+ int maxDy = infoPtr->uTotalHeight - infoPtr->uVisibleHeight;
+
+ if (newDy > maxDy) newDy = maxDy;
+ if (newDy < 0) newDy = 0;
+
+ if (newDy == infoPtr->cy) return TRUE;
+
+ TREEVIEW_VScroll(hwnd, MAKEWPARAM(SB_THUMBTRACK,newDy),0);
+ }
+ return TRUE;
+}
static LRESULT
TREEVIEW_KeyDown (HWND hwnd, WPARAM wParam, LPARAM lParam)
@@ -3908,6 +3935,11 @@
case WM_VSCROLL:
return TREEVIEW_VScroll (hwnd, wParam, lParam);
+ case WM_MOUSEWHEEL:
+ if (wParam & (MK_SHIFT | MK_CONTROL))
+ return DefWindowProcA( hwnd, uMsg, wParam, lParam );
+ return TREEVIEW_MouseWheel (hwnd, wParam, lParam);
+
case WM_DRAWITEM:
TRACE ("drawItem\n");
return DefWindowProcA (hwnd, uMsg, wParam, lParam);