]> git.saurik.com Git - wxWidgets.git/commitdiff
Fix assert on wxCalendarCtrl creation under Windows 7.
authorVadim Zeitlin <vadim@wxwidgets.org>
Fri, 26 Feb 2010 14:09:58 +0000 (14:09 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Fri, 26 Feb 2010 14:09:58 +0000 (14:09 +0000)
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

src/msw/calctrl.cpp

index 56ac3fdb18c225f1a0ebf840b96159bf0150ff68..a429ae43fc19e86ff285c809a765fa22a620c398 100644 (file)
@@ -262,11 +262,11 @@ wxCalendarCtrl::HitTest(const wxPoint& pos,
 bool wxCalendarCtrl::SetDate(const wxDateTime& dt)
 {
     wxCHECK_MSG( dt.IsValid(), false, "invalid date" );
-    wxDateTime newdt(dt);
-    newdt.ResetTime();
-    
+
+    const wxDateTime date = dt.GetDateOnly();
+
     SYSTEMTIME st;
-    newdt.GetAsMSWSysTime(&st);
+    date.GetAsMSWSysTime(&st);
     if ( !MonthCal_SetCurSel(GetHwnd(), &st) )
     {
         wxLogDebug(wxT("DateTime_SetSystemtime() failed"));
@@ -274,7 +274,7 @@ bool wxCalendarCtrl::SetDate(const wxDateTime& dt)
         return false;
     }
 
-    m_date = newdt;
+    m_date = date;
 
     return true;
 }
@@ -292,7 +292,12 @@ wxDateTime wxCalendarCtrl::GetDate() const
 
     wxDateTime dt(st);
 
-    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;