if ( dt.IsValid() || (style & wxDP_ALLOWNONE) )
SetValue(dt);
+ else
+ SetValue(wxDateTime::Today());
return true;
}
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__
// 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);
- if ( GetEventHandler()->ProcessEvent(event) )
+ if ( HandleWindowEvent(event) )
{
*result = 0;
return true;
}
}
+ //else: both the old and new values are invalid, nothing changed
}
}