Module: wine Branch: stable Commit: 8ba69d9a02a77e736ff0db0816fe5e9cdc139a50 URL: https://source.winehq.org/git/wine.git/?a=commit;h=8ba69d9a02a77e736ff0db081...
Author: Nikolay Sivov nsivov@codeweavers.com Date: Tue Jan 28 12:26:42 2020 +0300
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 92d336263cf320241e004d48e22becff387850c3) Signed-off-by: Michael Stefaniuc mstefani@winehq.org
---
dlls/user32/scroll.c | 6 ++++++ dlls/user32/tests/scroll.c | 3 --- 2 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/dlls/user32/scroll.c b/dlls/user32/scroll.c index d611cf0060..1d6c048429 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 9c892ed484..7181a02874 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);