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