Unlike previous versions of Windows, 7 includes the time component in the
return value of MonthCal_GetCurSel() and because of it the comparison with
m_date (which doesn't have any time part) fails.
Fix this by comparing just the date parts of the two wxDateTime objects.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63560
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
bool wxCalendarCtrl::SetDate(const wxDateTime& dt)
{
wxCHECK_MSG( dt.IsValid(), false, "invalid date" );
bool wxCalendarCtrl::SetDate(const wxDateTime& dt)
{
wxCHECK_MSG( dt.IsValid(), false, "invalid date" );
- wxDateTime newdt(dt);
- newdt.ResetTime();
-
+
+ const wxDateTime date = dt.GetDateOnly();
+
- newdt.GetAsMSWSysTime(&st);
+ date.GetAsMSWSysTime(&st);
if ( !MonthCal_SetCurSel(GetHwnd(), &st) )
{
wxLogDebug(wxT("DateTime_SetSystemtime() failed"));
if ( !MonthCal_SetCurSel(GetHwnd(), &st) )
{
wxLogDebug(wxT("DateTime_SetSystemtime() failed"));
- wxASSERT_MSG( dt == m_date, "mismatch between data and control" );
+ // Windows XP and earlier didn't include the time component into the
+ // returned date but Windows 7 does, so we can't compare the full objects
+ // in the same way under all the Windows versions, just compare their date
+ // parts
+ wxASSERT_MSG( dt.GetDateOnly() == m_date.GetDateOnly(),
+ "mismatch between data and control" );
#endif // wxDEBUG_LEVEL
return m_date;
#endif // wxDEBUG_LEVEL
return m_date;