comctl32/monthcal: Fix MCM_SETSELRANGE for multiple calendars case.
This commit is contained in:
parent
2c6443ae57
commit
ca533fca8c
|
@ -1564,6 +1564,7 @@ static LRESULT
|
||||||
MONTHCAL_SetSelRange(MONTHCAL_INFO *infoPtr, SYSTEMTIME *range)
|
MONTHCAL_SetSelRange(MONTHCAL_INFO *infoPtr, SYSTEMTIME *range)
|
||||||
{
|
{
|
||||||
SYSTEMTIME old_range[2];
|
SYSTEMTIME old_range[2];
|
||||||
|
INT diff;
|
||||||
|
|
||||||
TRACE("%p\n", range);
|
TRACE("%p\n", range);
|
||||||
|
|
||||||
|
@ -1590,7 +1591,21 @@ MONTHCAL_SetSelRange(MONTHCAL_INFO *infoPtr, SYSTEMTIME *range)
|
||||||
infoPtr->minSel = range[1];
|
infoPtr->minSel = range[1];
|
||||||
infoPtr->maxSel = range[0];
|
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 */
|
/* update day of week */
|
||||||
MONTHCAL_CalculateDayOfWeek(&infoPtr->minSel, TRUE);
|
MONTHCAL_CalculateDayOfWeek(&infoPtr->minSel, TRUE);
|
||||||
|
|
Loading…
Reference in New Issue