Zhiyi Zhang : comctl32/trackbar: Update control parts when style changed.

Alexandre Julliard julliard at winehq.org
Tue Jun 22 16:17:06 CDT 2021


Module: wine
Branch: master
Commit: 6799667b71c74547a7cb66ad59e81295c561255b
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=6799667b71c74547a7cb66ad59e81295c561255b

Author: Zhiyi Zhang <zzhang at codeweavers.com>
Date:   Tue Jun 22 16:21:22 2021 +0800

comctl32/trackbar: Update control parts when style changed.

Fix trackbar draws incorrectly after changing style. For example, adding TBS_BOTH should cause a
total repaint.

Signed-off-by: Zhiyi Zhang <zzhang at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/comctl32/trackbar.c | 25 ++++++++++++++++---------
 1 file changed, 16 insertions(+), 9 deletions(-)

diff --git a/dlls/comctl32/trackbar.c b/dlls/comctl32/trackbar.c
index 1859cf0f516..ce6a20c6c63 100644
--- a/dlls/comctl32/trackbar.c
+++ b/dlls/comctl32/trackbar.c
@@ -1502,6 +1502,19 @@ TRACKBAR_InitializeThumb (TRACKBAR_INFO *infoPtr)
     return 0;
 }
 
+static void TRACKBAR_RecalculateAll (TRACKBAR_INFO *infoPtr)
+{
+    if (infoPtr->dwStyle & TBS_FIXEDLENGTH)
+    {
+        TRACKBAR_CalcChannel(infoPtr);
+        TRACKBAR_UpdateThumb(infoPtr);
+    }
+    else
+    {
+        TRACKBAR_InitializeThumb(infoPtr);
+    }
+    TRACKBAR_AlignBuddies(infoPtr);
+}
 
 static LRESULT
 TRACKBAR_Create (HWND hwnd, const CREATESTRUCTW *lpcs)
@@ -1677,14 +1690,7 @@ TRACKBAR_SetFocus (TRACKBAR_INFO *infoPtr)
 static LRESULT
 TRACKBAR_Size (TRACKBAR_INFO *infoPtr)
 {
-    if (infoPtr->dwStyle & TBS_FIXEDLENGTH)
-    {
-        TRACKBAR_CalcChannel(infoPtr);
-        TRACKBAR_UpdateThumb(infoPtr);
-    }
-    else
-        TRACKBAR_InitializeThumb(infoPtr);
-    TRACKBAR_AlignBuddies (infoPtr);
+    TRACKBAR_RecalculateAll(infoPtr);
     TRACKBAR_InvalidateAll(infoPtr);
 
     return 0;
@@ -1697,7 +1703,8 @@ TRACKBAR_StyleChanged (TRACKBAR_INFO *infoPtr, WPARAM wStyleType,
     if (wStyleType != GWL_STYLE) return 0;
 
     infoPtr->dwStyle = lpss->styleNew;
-
+    TRACKBAR_RecalculateAll(infoPtr);
+    TRACKBAR_InvalidateAll(infoPtr);
     return 0;
 }
 




More information about the wine-cvs mailing list