Module: wine Branch: master Commit: 68701440227f3230a18aad98217b771d22866bec URL: http://source.winehq.org/git/wine.git/?a=commit;h=68701440227f3230a18aad9821...
Author: Nikolay Sivov nsivov@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@codeweavers.com Signed-off-by: Alexandre Julliard julliard@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); }