Commit fec346b3 authored by Nikolay Sivov's avatar Nikolay Sivov Committed by Alexandre Julliard

comctl32/monthcal: Properly compute maximum date for control.

parent e7164213
...@@ -521,15 +521,27 @@ static void MONTHCAL_GetMinDate(const MONTHCAL_INFO *infoPtr, SYSTEMTIME *date) ...@@ -521,15 +521,27 @@ static void MONTHCAL_GetMinDate(const MONTHCAL_INFO *infoPtr, SYSTEMTIME *date)
static void MONTHCAL_GetMaxDate(const MONTHCAL_INFO *infoPtr, SYSTEMTIME *date) static void MONTHCAL_GetMaxDate(const MONTHCAL_INFO *infoPtr, SYSTEMTIME *date)
{ {
/* the latest date is in latest calendar */ /* the latest date is in latest calendar */
SYSTEMTIME st, lt_month = infoPtr->calendars[MONTHCAL_GetCalCount(infoPtr)-1].month; SYSTEMTIME st, *lt_month = &infoPtr->calendars[MONTHCAL_GetCalCount(infoPtr)-1].month;
INT first_day;
*date = *lt_month;
st = *lt_month;
/* day of week of first day of current month */
st.wDay = 1;
first_day = MONTHCAL_CalculateDayOfWeek(&st, FALSE);
*date = lt_month;
MONTHCAL_GetNextMonth(date); MONTHCAL_GetNextMonth(date);
MONTHCAL_GetPrevMonth(&st);
/* last calendar starts with some date from previous month that not displayed */
st.wDay = MONTHCAL_MonthLength(st.wMonth, st.wYear) +
(infoPtr->firstDay - first_day) % 7 + 1;
if (st.wDay > MONTHCAL_MonthLength(st.wMonth, st.wYear)) st.wDay -= 7;
MONTHCAL_GetMinDate(infoPtr, &st);
/* Use month length to get max day. 42 means max day count in calendar area */ /* Use month length to get max day. 42 means max day count in calendar area */
date->wDay = 42 - (MONTHCAL_MonthLength(st.wMonth, st.wYear) - st.wDay + 1) - date->wDay = 42 - (MONTHCAL_MonthLength(st.wMonth, st.wYear) - st.wDay + 1) -
MONTHCAL_MonthLength(lt_month.wMonth, lt_month.wYear); MONTHCAL_MonthLength(lt_month->wMonth, lt_month->wYear);
/* fix day of week */ /* fix day of week */
MONTHCAL_CalculateDayOfWeek(date, TRUE); MONTHCAL_CalculateDayOfWeek(date, TRUE);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment