fix bug in Mark() which highlighted the day not only in the currently shown month but also in adjancet ones (see #9155)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@54970 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
1c3e52af4b
commit
52980340f4
@ -329,12 +329,20 @@ void wxCalendarCtrl::Mark(size_t day, bool mark)
|
||||
|
||||
void wxCalendarCtrl::UpdateMarks()
|
||||
{
|
||||
MONTHDAYSTATE states[3];
|
||||
// we show only one full month but there can be some days from the month
|
||||
// before it and from the one after it so days from 3 different months can
|
||||
// be partially shown
|
||||
MONTHDAYSTATE states[3] = { 0 };
|
||||
const int nMonths = MonthCal_GetMonthRange(GetHwnd(), GMR_DAYSTATE, NULL);
|
||||
wxCHECK_RET( nMonths <= (int)WXSIZEOF(states), "unexpected months range" );
|
||||
|
||||
for ( int i = 0; i < nMonths; i++ )
|
||||
states[i] = m_marks;
|
||||
// although in principle the calendar might not show any days from the
|
||||
// preceding months, it seems like it always does, consider e.g. Feb 2010
|
||||
// which starts on Monday and ends on Sunday and so could fit on 4 lines
|
||||
// without showing any subsequent months -- the standard control still
|
||||
// shows it on 6 lines and the number of visible months is still 3
|
||||
wxCHECK_RET( nMonths == (int)WXSIZEOF(states), "unexpected months range" );
|
||||
|
||||
states[1] = m_marks; // the fully visible month is the one in the middle
|
||||
|
||||
if ( !MonthCal_SetDayState(GetHwnd(), nMonths, states) )
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user