Nikolay Sivov : comctl32/trackbar: Scale thumb size with resolution.

Alexandre Julliard julliard at winehq.org
Tue Jul 17 15:52:37 CDT 2018


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

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Tue Jul 17 14:13:03 2018 +0300

comctl32/trackbar: Scale thumb size with resolution.

Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

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

diff --git a/dlls/comctl32/trackbar.c b/dlls/comctl32/trackbar.c
index d774823..7cb73ca 100644
--- a/dlls/comctl32/trackbar.c
+++ b/dlls/comctl32/trackbar.c
@@ -1468,25 +1468,28 @@ TRACKBAR_SetUnicodeFormat (TRACKBAR_INFO *infoPtr, BOOL fUnicode)
     return bTemp;
 }
 
+static int get_scaled_metric(const TRACKBAR_INFO *infoPtr, int value)
+{
+    return MulDiv(value, GetDpiForWindow(infoPtr->hwndSelf), 96);
+}
 
 static LRESULT
 TRACKBAR_InitializeThumb (TRACKBAR_INFO *infoPtr)
 {
+    int client_size;
     RECT rect;
-    int clientWidth, clientMetric;
 
-    /* initial thumb length */
-    clientMetric = (infoPtr->dwStyle & TBS_ENABLESELRANGE) ? 23 : 21;
+    infoPtr->uThumbLen = get_scaled_metric(infoPtr, infoPtr->dwStyle & TBS_ENABLESELRANGE ? 23 : 21);
+
     GetClientRect(infoPtr->hwndSelf,&rect);
-    if (infoPtr->dwStyle & TBS_VERT) {
-	clientWidth = rect.right - rect.left;
-    } else {
-	clientWidth = rect.bottom - rect.top;
-    }
-    if (clientWidth >= clientMetric)
-        infoPtr->uThumbLen = clientMetric;
+    if (infoPtr->dwStyle & TBS_VERT)
+        client_size = rect.right - rect.left;
     else
-        infoPtr->uThumbLen = clientWidth > 9 ? clientWidth - 6 : 4;
+        client_size = rect.bottom - rect.top;
+
+    if (client_size < infoPtr->uThumbLen)
+        infoPtr->uThumbLen = client_size > get_scaled_metric(infoPtr, 9) ?
+            client_size - get_scaled_metric(infoPtr, 5) : get_scaled_metric(infoPtr, 4);
 
     TRACKBAR_CalcChannel (infoPtr);
     TRACKBAR_UpdateThumb (infoPtr);




More information about the wine-cvs mailing list