]> git.saurik.com Git - wxWidgets.git/commitdiff
fix bug in Mark() which highlighted the day not only in the currently shown month...
authorVadim Zeitlin <vadim@wxwidgets.org>
Tue, 5 Aug 2008 01:22:19 +0000 (01:22 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Tue, 5 Aug 2008 01:22:19 +0000 (01:22 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@54970 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/msw/calctrl.cpp

index 90faa55f4736a7e3ca6cf250d7797b862c20a41e..cf1179b8aaef6338327e75a88b196dd70b733549 100644 (file)
@@ -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) )
     {