From: Esme Povirk esme@codeweavers.com
--- dlls/user32/tests/msg.c | 4 ++-- dlls/win32u/scroll.c | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-)
diff --git a/dlls/user32/tests/msg.c b/dlls/user32/tests/msg.c index 3fdf120c358..e62616ff456 100644 --- a/dlls/user32/tests/msg.c +++ b/dlls/user32/tests/msg.c @@ -2057,12 +2057,12 @@ static const struct message WmSetScrollRangeSeq[] = /* SetScrollRange for a window without a non-client area */ static const struct message WmSetScrollRangeHSeq_empty[] = { - { EVENT_OBJECT_VALUECHANGE, winevent_hook|wparam|lparam|msg_todo, OBJID_HSCROLL, 0 }, + { EVENT_OBJECT_VALUECHANGE, winevent_hook|wparam|lparam, OBJID_HSCROLL, 0 }, { 0 } }; static const struct message WmSetScrollRangeVSeq_empty[] = { - { EVENT_OBJECT_VALUECHANGE, winevent_hook|wparam|lparam|msg_todo, OBJID_VSCROLL, 0 }, + { EVENT_OBJECT_VALUECHANGE, winevent_hook|wparam|lparam, OBJID_VSCROLL, 0 }, { 0 } }; static const struct message WmSetScrollRangeHVSeq[] = diff --git a/dlls/win32u/scroll.c b/dlls/win32u/scroll.c index da52a7a4fba..a42a7437175 100644 --- a/dlls/win32u/scroll.c +++ b/dlls/win32u/scroll.c @@ -1024,6 +1024,24 @@ done: refresh_scroll_bar( hwnd, bar, TRUE, TRUE ); else if (action & SA_SSI_REPAINT_ARROWS) refresh_scroll_bar( hwnd, bar, TRUE, FALSE ); + + if (redraw) + { + switch (bar) + { + case SB_CTL: + NtUserNotifyWinEvent( EVENT_OBJECT_VALUECHANGE, hwnd, OBJID_CLIENT, 0 ); + break; + case SB_HORZ: + if (get_window_long( hwnd, GWL_STYLE ) & WS_HSCROLL) + NtUserNotifyWinEvent( EVENT_OBJECT_VALUECHANGE, hwnd, OBJID_HSCROLL, 0 ); + break; + case SB_VERT: + if (get_window_long( hwnd, GWL_STYLE ) & WS_VSCROLL) + NtUserNotifyWinEvent( EVENT_OBJECT_VALUECHANGE, hwnd, OBJID_VSCROLL, 0 ); + break; + } + } }
return ret; /* Return current position */