[PATCH] comctl32/trackbar: Fix reseting to default page size
Nikolay Sivov
nsivov at codeweavers.com
Mon May 7 17:30:52 CDT 2018
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
dlls/comctl32/tests/trackbar.c | 11 +++++++++++
dlls/comctl32/trackbar.c | 31 +++++++++++++++++--------------
2 files changed, 28 insertions(+), 14 deletions(-)
diff --git a/dlls/comctl32/tests/trackbar.c b/dlls/comctl32/tests/trackbar.c
index 7d66df775e..7f17e9e4b6 100644
--- a/dlls/comctl32/tests/trackbar.c
+++ b/dlls/comctl32/tests/trackbar.c
@@ -613,6 +613,17 @@ static void test_page_size(void)
r = SendMessageA(hWndTrackbar, TBM_GETPAGESIZE, 0, 0);
ok(r == 10, "Unexpected page size %d.\n", r);
+ r = SendMessageA(hWndTrackbar, TBM_SETPAGESIZE, 0, -1);
+ ok(r == 10, "Unexpected page size %d.\n", r);
+
+ r = SendMessageA(hWndTrackbar, TBM_GETPAGESIZE, 0, 0);
+ ok(r == 7, "Unexpected page size %d.\n", r);
+
+ SendMessageA(hWndTrackbar, TBM_SETRANGEMAX, 0, 100);
+
+ r = SendMessageA(hWndTrackbar, TBM_GETPAGESIZE, 0, 0);
+ ok(r == 19, "Unexpected page size %d.\n", r);
+
DestroyWindow(hWndTrackbar);
hWndTrackbar = create_trackbar(defaultstyle, hWndParent);
diff --git a/dlls/comctl32/trackbar.c b/dlls/comctl32/trackbar.c
index 762d2e1376..d774823d60 100644
--- a/dlls/comctl32/trackbar.c
+++ b/dlls/comctl32/trackbar.c
@@ -1196,18 +1196,30 @@ TRACKBAR_SetLineSize (TRACKBAR_INFO *infoPtr, LONG lLineSize)
return lTemp;
}
+static void TRACKBAR_UpdatePageSize(TRACKBAR_INFO *infoPtr)
+{
+ if (infoPtr->flags & TB_USER_PAGE)
+ return;
+
+ infoPtr->lPageSize = (infoPtr->lRangeMax - infoPtr->lRangeMin) / 5;
+ if (infoPtr->lPageSize == 0) infoPtr->lPageSize = 1;
+}
static inline LONG
TRACKBAR_SetPageSize (TRACKBAR_INFO *infoPtr, LONG lPageSize)
{
LONG lTemp = infoPtr->lPageSize;
- if (lPageSize != -1)
- infoPtr->lPageSize = lPageSize;
+ if (lPageSize == -1)
+ {
+ infoPtr->flags &= ~TB_USER_PAGE;
+ TRACKBAR_UpdatePageSize(infoPtr);
+ }
else
- infoPtr->lPageSize = TB_DEFAULTPAGESIZE;
-
- infoPtr->flags |= TB_USER_PAGE;
+ {
+ infoPtr->flags |= TB_USER_PAGE;
+ infoPtr->lPageSize = lPageSize;
+ }
return lTemp;
}
@@ -1234,15 +1246,6 @@ TRACKBAR_SetPos (TRACKBAR_INFO *infoPtr, BOOL fPosition, LONG lPosition)
return 0;
}
-static void TRACKBAR_UpdatePageSize(TRACKBAR_INFO *infoPtr)
-{
- if (infoPtr->flags & TB_USER_PAGE)
- return;
-
- infoPtr->lPageSize = (infoPtr->lRangeMax - infoPtr->lRangeMin) / 5;
- if (infoPtr->lPageSize == 0) infoPtr->lPageSize = 1;
-}
-
static inline LRESULT
TRACKBAR_SetRange (TRACKBAR_INFO *infoPtr, BOOL redraw, LONG range)
{
--
2.17.0
More information about the wine-devel
mailing list