Nikolay Sivov : comctl32/monthcal: Always reset range flags and date limits on MCM_SETRANGE.

Alexandre Julliard julliard at wine.codeweavers.com
Tue Mar 15 10:12:16 CDT 2016


Module: wine
Branch: master
Commit: 68701440227f3230a18aad98217b771d22866bec
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=68701440227f3230a18aad98217b771d22866bec

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Mon Mar 14 20:19:25 2016 +0300

comctl32/monthcal: Always reset range flags and date limits on MCM_SETRANGE.

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

---

 dlls/comctl32/monthcal.c       |  3 +++
 dlls/comctl32/tests/datetime.c |  4 +---
 dlls/comctl32/tests/monthcal.c | 35 +++++++++++++++++++++++++++++++++++
 3 files changed, 39 insertions(+), 3 deletions(-)

diff --git a/dlls/comctl32/monthcal.c b/dlls/comctl32/monthcal.c
index c68a073..6cdcfca 100644
--- a/dlls/comctl32/monthcal.c
+++ b/dlls/comctl32/monthcal.c
@@ -1452,6 +1452,9 @@ MONTHCAL_SetRange(MONTHCAL_INFO *infoPtr, SHORT limits, SYSTEMTIME *range)
         (limits & GDTR_MAX && !MONTHCAL_ValidateDate(&range[1])))
         return FALSE;
 
+    infoPtr->rangeValid = 0;
+    infoPtr->minDate = infoPtr->maxDate = st_null;
+
     if (limits & GDTR_MIN)
     {
         if (!MONTHCAL_ValidateTime(&range[0]))
diff --git a/dlls/comctl32/tests/datetime.c b/dlls/comctl32/tests/datetime.c
index 195c719..61ecfb5 100644
--- a/dlls/comctl32/tests/datetime.c
+++ b/dlls/comctl32/tests/datetime.c
@@ -360,9 +360,7 @@ static void test_dtm_set_and_get_range(void)
     r = SendMessageA(hWnd, DTM_SETRANGE, GDTR_MAX, (LPARAM)st);
     expect(1, r);
     r = SendMessageA(hWnd, DTM_GETRANGE, 0, (LPARAM)getSt);
-    todo_wine {
-        ok(r == GDTR_MAX, "Expected %x, not %x(GDTR_MIN) or %x(GDTR_MIN | GDTR_MAX), got %lx\n", GDTR_MAX, GDTR_MIN, GDTR_MIN | GDTR_MAX, r);
-    }
+    ok(r == GDTR_MAX, "Expected %x, not %x(GDTR_MIN) or %x(GDTR_MIN | GDTR_MAX), got %lx\n", GDTR_MAX, GDTR_MIN, GDTR_MIN | GDTR_MAX, r);
     expect_systime(&st[1], &getSt[1]);
 
     r = SendMessageA(hWnd, DTM_SETRANGE, GDTR_MIN, (LPARAM)st);
diff --git a/dlls/comctl32/tests/monthcal.c b/dlls/comctl32/tests/monthcal.c
index 792f66e..24dcdfc 100644
--- a/dlls/comctl32/tests/monthcal.c
+++ b/dlls/comctl32/tests/monthcal.c
@@ -262,6 +262,7 @@ static void test_monthcal(void)
     SYSTEMTIME st[2], st1[2], today;
     int res, month_range;
     DWORD limits;
+    BOOL r;
 
     hwnd = CreateWindowA(MONTHCAL_CLASSA, "MonthCal", WS_POPUP | WS_VISIBLE, CW_USEDEFAULT,
                          0, 300, 300, 0, 0, NULL, NULL);
@@ -453,6 +454,40 @@ static void test_monthcal(void)
     expect(0, st1[1].wSecond);
     expect(0, st1[1].wMilliseconds);
 
+    /* 0 limit flags */
+    limits = SendMessageA(hwnd, MCM_GETRANGE, 0, (LPARAM)st1);
+    ok(limits == GDTR_MIN, "got 0x%08x\n", limits);
+
+    GetSystemTime(st);
+    st[1] = st[0];
+    st[1].wYear++;
+    r = SendMessageA(hwnd, MCM_SETRANGE, 0, (LPARAM)st);
+    ok(r, "got %d\n", r);
+
+    limits = SendMessageA(hwnd, MCM_GETRANGE, 0, (LPARAM)st);
+    ok(limits == 0, "got 0x%08x\n", limits);
+    ok(st[0].wYear == 0 && st[1].wYear == 0, "got %u, %u\n", st[0].wYear, st[1].wYear);
+
+    /* flags are 0, set min limit */
+    GetSystemTime(st);
+    st[1] = st[0];
+    st[1].wYear++;
+
+    r = SendMessageA(hwnd, MCM_SETRANGE, GDTR_MIN, (LPARAM)st);
+    ok(r, "got %d\n", r);
+
+    limits = SendMessageA(hwnd, MCM_GETRANGE, 0, (LPARAM)st1);
+    ok(limits == GDTR_MIN, "got 0x%08x\n", limits);
+    ok(st1[1].wYear == 0, "got %u\n", st1[1].wYear);
+
+    /* now set max limit, check flags */
+    r = SendMessageA(hwnd, MCM_SETRANGE, GDTR_MAX, (LPARAM)st);
+    ok(r, "got %d\n", r);
+
+    limits = SendMessageA(hwnd, MCM_GETRANGE, 0, (LPARAM)st1);
+    ok(limits == GDTR_MAX, "got 0x%08x\n", limits);
+    ok(st1[0].wYear == 0, "got %u\n", st1[0].wYear);
+
     DestroyWindow(hwnd);
 }
 




More information about the wine-cvs mailing list