user32: Improve window state handling in SetScrollInfo().

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=42038
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
(cherry picked from commit 92d336263c)
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
stable
Nikolay Sivov 2020-01-28 12:26:42 +03:00 committed by Michael Stefaniuc
parent 5d489c26e4
commit 8ba69d9a02
2 changed files with 6 additions and 3 deletions

View File

@ -1750,6 +1750,12 @@ static INT SCROLL_SetScrollInfo( HWND hwnd, INT nBar, LPCSCROLLINFO info, BOOL b
action |= SA_SSI_SHOW;
}
if (nBar == SB_CTL && bRedraw && IsWindowVisible(hwnd) &&
(new_flags == ESB_ENABLE_BOTH || new_flags == ESB_DISABLE_BOTH))
{
EnableWindow(hwnd, new_flags == ESB_ENABLE_BOTH);
}
if (infoPtr->flags != new_flags) /* check arrow flags */
{
infoPtr->flags = new_flags;

View File

@ -634,7 +634,6 @@ static void test_SetScrollInfo(void)
si.nPage = 50;
SetScrollInfo(hScroll, SB_CTL, &si, TRUE);
ret = IsWindowEnabled(hScroll);
todo_wine
ok(ret, "Unexpected enabled state.\n");
si.fMask = SIF_POS|SIF_RANGE|SIF_PAGE|SIF_DISABLENOSCROLL;
@ -657,7 +656,6 @@ todo_wine
si.nPage = 100;
SetScrollInfo(hScroll, SB_CTL, &si, TRUE);
ret = IsWindowEnabled(hScroll);
todo_wine
ok(!ret, "Unexpected enabled state.\n");
EnableScrollBar(hScroll, SB_CTL, ESB_DISABLE_BOTH);
@ -671,7 +669,6 @@ todo_wine
si.nPage = 41;
SetScrollInfo(hScroll, SB_CTL, &si, TRUE);
ret = IsWindowEnabled(hScroll);
todo_wine
ok(ret, "Unexpected enabled state.\n");
DestroyWindow(hScroll);