diff --git a/dlls/user32/scroll.c b/dlls/user32/scroll.c index d611cf00602..1d6c0484295 100644 --- a/dlls/user32/scroll.c +++ b/dlls/user32/scroll.c @@ -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; diff --git a/dlls/user32/tests/scroll.c b/dlls/user32/tests/scroll.c index 9c892ed484a..7181a028748 100644 --- a/dlls/user32/tests/scroll.c +++ b/dlls/user32/tests/scroll.c @@ -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);