[PATCH] user32: Improve window state handling in SetScrollInfo().

Nikolay Sivov nsivov at codeweavers.com
Tue Jan 28 03:26:42 CST 2020


Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=42038
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
 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);
-- 
2.24.1




More information about the wine-devel mailing list