From 1dc2e6de728f90d2cd10f0fc7fea463425f7359f Mon Sep 17 00:00:00 2001 From: Doug Lyons Date: Wed, 6 May 2026 19:11:58 -0500 Subject: [PATCH] [USER32][COMCTL32] EDIT control: Fix vertical scrolling past line number 32767 (#8930) CORE-19305 Change how WM_VSCROLL is handled to allow higher line counts to be passed to EDIT_WM_VScroll. Use the GetScrollInfo() function to determine vertical scroll position and pass this to EDIT_WM_VScroll. --------- Co-authored-by: Jose Carlos Jesus --- dll/win32/comctl32/edit.c | 15 +++++++++++++++ win32ss/user/user32/controls/edit.c | 15 +++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/dll/win32/comctl32/edit.c b/dll/win32/comctl32/edit.c index 991041a4ea0..ca52e7e496b 100644 --- a/dll/win32/comctl32/edit.c +++ b/dll/win32/comctl32/edit.c @@ -5142,7 +5142,22 @@ static LRESULT CALLBACK EDIT_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPAR break; case WM_VSCROLL: +#ifdef __REACTOS__ + { + SCROLLINFO si; + + si.cbSize = sizeof(si); + si.fMask = SIF_TRACKPOS; + if (!GetScrollInfo(hwnd, SB_VERT, &si)) + { + result = 1; + break; + } + result = EDIT_WM_VScroll(es, LOWORD(wParam), si.nTrackPos); + } +#else result = EDIT_WM_VScroll(es, LOWORD(wParam), (short)HIWORD(wParam)); +#endif break; case WM_MOUSEWHEEL: diff --git a/win32ss/user/user32/controls/edit.c b/win32ss/user/user32/controls/edit.c index a69ed718f42..ceff2843f15 100644 --- a/win32ss/user/user32/controls/edit.c +++ b/win32ss/user/user32/controls/edit.c @@ -5350,7 +5350,22 @@ LRESULT WINAPI EditWndProc_common( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lP break; case WM_VSCROLL: +#ifdef __REACTOS__ + { + SCROLLINFO si; + + si.cbSize = sizeof(si); + si.fMask = SIF_TRACKPOS; + if (!GetScrollInfo(hwnd, SB_VERT, &si)) + { + result = 1; + break; + } + result = EDIT_WM_VScroll(es, LOWORD(wParam), si.nTrackPos); + } +#else result = EDIT_WM_VScroll(es, LOWORD(wParam), (short)HIWORD(wParam)); +#endif break; case WM_MOUSEWHEEL: