]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/datectrl.cpp
Small code cleanup
[wxWidgets.git] / src / msw / datectrl.cpp
index 4e8a940ad683ab5a0126a7033e1d50d043906f51..58a3b435c2951dcea56be5cd59f199c4cf1c2237 100644 (file)
@@ -256,9 +256,15 @@ void wxDatePickerCtrl::SetValue(const wxDateTime& dt)
         wxLogDebug(_T("DateTime_SetSystemtime() failed"));
     }
 
-    wxFromSystemTime(&m_date, st);
+    // we need to keep only the date part, times don't make sense for this
+    // control (in particular, comparisons with other dates would fail)
+    m_date = dt;
+    if ( m_date.IsValid() )
+        m_date.ResetTime();
 }
 
+#include <iostream>
+
 wxDateTime wxDatePickerCtrl::GetValue() const
 {
 #ifdef __WXDEBUG__
@@ -343,7 +349,8 @@ wxDatePickerCtrl::MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result)
 
             // filter out duplicate DTN_DATETIMECHANGE events which the native
             // control sends us when using wxDP_DROPDOWN style
-            if ( !m_date.IsValid() || dt != m_date )
+            if ( (m_date.IsValid() != dt.IsValid()) ||
+                    (m_date.IsValid() && dt != m_date) )
             {
                 m_date = dt;
                 wxDateEvent event(this, dt, wxEVT_DATE_CHANGED);
@@ -353,6 +360,7 @@ wxDatePickerCtrl::MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result)
                     return true;
                 }
             }
+            //else: both the old and new values are invalid, nothing changed
         }
     }