From 5f4c53b3bc078fcbbb2a27e0d58f27384ba7e904 Mon Sep 17 00:00:00 2001 From: Sergey Guralnik Date: Thu, 16 Aug 2012 18:05:25 +0400 Subject: [PATCH 2/2] comctl32: Correct values passed in MCN_SELECT/MCN_SELCHANGE notifications. --- dlls/comctl32/monthcal.c | 17 +++++++++++++++-- dlls/comctl32/tests/monthcal.c | 7 +++---- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/dlls/comctl32/monthcal.c b/dlls/comctl32/monthcal.c index c5b6d91..fafe60c 100644 --- a/dlls/comctl32/monthcal.c +++ b/dlls/comctl32/monthcal.c @@ -185,7 +185,14 @@ static inline void MONTHCAL_NotifySelectionChange(const MONTHCAL_INFO *infoPtr) nmsc.nmhdr.idFrom = GetWindowLongPtrW(infoPtr->hwndSelf, GWLP_ID); nmsc.nmhdr.code = MCN_SELCHANGE; nmsc.stSelStart = infoPtr->minSel; - nmsc.stSelEnd = infoPtr->maxSel; + nmsc.stSelStart.wDayOfWeek = 0; + if(infoPtr->dwStyle & MCS_MULTISELECT){ + nmsc.stSelEnd = infoPtr->maxSel; + nmsc.stSelEnd.wDayOfWeek = 0; + } + else + memset(&nmsc.stSelEnd, 0, sizeof nmsc.stSelEnd); + SendMessageW(infoPtr->hwndNotify, WM_NOTIFY, nmsc.nmhdr.idFrom, (LPARAM)&nmsc); } @@ -198,7 +205,13 @@ static inline void MONTHCAL_NotifySelect(const MONTHCAL_INFO *infoPtr) nmsc.nmhdr.idFrom = GetWindowLongPtrW(infoPtr->hwndSelf, GWLP_ID); nmsc.nmhdr.code = MCN_SELECT; nmsc.stSelStart = infoPtr->minSel; - nmsc.stSelEnd = infoPtr->maxSel; + nmsc.stSelStart.wDayOfWeek = 0; + if(infoPtr->dwStyle & MCS_MULTISELECT){ + nmsc.stSelEnd = infoPtr->maxSel; + nmsc.stSelEnd.wDayOfWeek = 0; + } + else + memset(&nmsc.stSelEnd, 0, sizeof nmsc.stSelEnd); SendMessageW(infoPtr->hwndNotify, WM_NOTIFY, nmsc.nmhdr.idFrom, (LPARAM)&nmsc); } diff --git a/dlls/comctl32/tests/monthcal.c b/dlls/comctl32/tests/monthcal.c index d0678f6..0ad75cb 100644 --- a/dlls/comctl32/tests/monthcal.c +++ b/dlls/comctl32/tests/monthcal.c @@ -498,19 +498,18 @@ static LRESULT WINAPI parent_wnd_proc(HWND hwnd, UINT message, WPARAM wParam, LP expect(st[0].wYear, nmchg->stSelStart.wYear); expect(st[0].wMonth, nmchg->stSelStart.wMonth); - todo_wine expect(0, nmchg->stSelStart.wDayOfWeek); + expect(0, nmchg->stSelStart.wDayOfWeek); expect(st[0].wDay, nmchg->stSelStart.wDay); if(is_multisel) { expect(st[1].wYear, nmchg->stSelEnd.wYear); expect(st[1].wMonth, nmchg->stSelEnd.wMonth); - todo_wine expect(0, nmchg->stSelEnd.wDayOfWeek); + expect(0, nmchg->stSelEnd.wDayOfWeek); expect(st[1].wDay, nmchg->stSelEnd.wDay); } else - todo_wine - ok(!(nmchg->stSelEnd.wYear | nmchg->stSelEnd.wMonth | + ok(!(nmchg->stSelEnd.wYear | nmchg->stSelEnd.wMonth | nmchg->stSelEnd.wDayOfWeek | nmchg->stSelEnd.wDay | nmchg->stSelEnd.wHour | nmchg->stSelEnd.wMinute | nmchg->stSelEnd.wSecond | nmchg->stSelEnd.wMilliseconds), -- 1.7.9.7