X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e4164aa980f7639254f44abfbf7ce31db2a21c4f..8d7490018a47f60149a35ced6f880ec834aba471:/src/msw/datectrl.cpp diff --git a/src/msw/datectrl.cpp b/src/msw/datectrl.cpp index c9129f8756..58a3b435c2 100644 --- a/src/msw/datectrl.cpp +++ b/src/msw/datectrl.cpp @@ -156,6 +156,8 @@ wxDatePickerCtrl::Create(wxWindow *parent, if ( dt.IsValid() || (style & wxDP_ALLOWNONE) ) SetValue(dt); + else + SetValue(wxDateTime::Today()); return true; } @@ -254,9 +256,15 @@ void wxDatePickerCtrl::SetValue(const wxDateTime& dt) wxLogDebug(_T("DateTime_SetSystemtime() failed")); } + // 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 + wxDateTime wxDatePickerCtrl::GetValue() const { #ifdef __WXDEBUG__ @@ -341,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); @@ -351,6 +360,7 @@ wxDatePickerCtrl::MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result) return true; } } + //else: both the old and new values are invalid, nothing changed } }