Module: wine Branch: master Commit: ca533fca8c6a513814445b44cbd9b4bdcbc319e2 URL: http://source.winehq.org/git/wine.git/?a=commit;h=ca533fca8c6a513814445b44cb...
Author: Nikolay Sivov nsivov@codeweavers.com Date: Mon Sep 19 11:16:43 2011 +0400
comctl32/monthcal: Fix MCM_SETSELRANGE for multiple calendars case.
---
dlls/comctl32/monthcal.c | 17 ++++++++++++++++- 1 files changed, 16 insertions(+), 1 deletions(-)
diff --git a/dlls/comctl32/monthcal.c b/dlls/comctl32/monthcal.c index d757c31..8fcdf28 100644 --- a/dlls/comctl32/monthcal.c +++ b/dlls/comctl32/monthcal.c @@ -1564,6 +1564,7 @@ static LRESULT MONTHCAL_SetSelRange(MONTHCAL_INFO *infoPtr, SYSTEMTIME *range) { SYSTEMTIME old_range[2]; + INT diff;
TRACE("%p\n", range);
@@ -1590,7 +1591,21 @@ MONTHCAL_SetSelRange(MONTHCAL_INFO *infoPtr, SYSTEMTIME *range) infoPtr->minSel = range[1]; infoPtr->maxSel = range[0]; } - infoPtr->calendars[0].month = infoPtr->minSel; + + diff = MONTHCAL_MonthDiff(&infoPtr->calendars[MONTHCAL_GetCalCount(infoPtr)-1].month, &infoPtr->maxSel); + if (diff < 0) + { + diff = MONTHCAL_MonthDiff(&infoPtr->calendars[0].month, &infoPtr->maxSel); + if (diff > 0) diff = 0; + } + + if (diff != 0) + { + INT i; + + for (i = 0; i < MONTHCAL_GetCalCount(infoPtr); i++) + MONTHCAL_GetMonth(&infoPtr->calendars[i].month, diff); + }
/* update day of week */ MONTHCAL_CalculateDayOfWeek(&infoPtr->minSel, TRUE);