Fix assert failures with wxDP_ALLOWNONE in the widgets sample

DatePickerWidgetsPage::OnDateChanged() must check whether the wxDateTime
value received from the control or event is valid before formatting it,
as this may not be the case when wxDP_ALLOWNONE is on, and trying to
format an invalid date results in assertion failures (and random junk in
the output).
This commit is contained in:
Vadim Zeitlin
2020-11-04 23:27:44 +01:00
parent 8a64b6acea
commit 6d4ce92c20

View File

@@ -327,11 +327,19 @@ void DatePickerWidgetsPage::OnButtonSetRange(wxCommandEvent& WXUNUSED(event))
}
}
// Helper function which has to be used here because the controls with
// wxDP_ALLOWNONE style can have invalid date, both in the control itself and
// in the event it generates.
static wxString FormatPossiblyInvalidDate(const wxDateTime& dt)
{
return dt.IsValid() ? dt.FormatISOCombined() : wxString("[none]");
}
void DatePickerWidgetsPage::OnDateChanged(wxDateEvent& event)
{
wxLogMessage("Date changed, now is %s (control value is %s).",
event.GetDate().FormatISOCombined(),
m_datePicker->GetValue().FormatISOCombined());
FormatPossiblyInvalidDate(event.GetDate()),
FormatPossiblyInvalidDate(m_datePicker->GetValue()));
}
#endif // wxUSE_DATEPICKCTRL