From e3de2916bb62ffd1dd54dc8547b1bb03c28e2454 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Fri, 17 Jul 2015 15:34:58 +0200 Subject: [PATCH] Adjust the date in wxDatePickerCtrlGeneric after changing range. Ensure that the current value remains between the lower and upper range boundaries in the generic implementation, as it was already done by the MSW one. --- src/generic/datectlg.cpp | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/generic/datectlg.cpp b/src/generic/datectlg.cpp index 8b1f51c896..4a89d31d57 100644 --- a/src/generic/datectlg.cpp +++ b/src/generic/datectlg.cpp @@ -409,7 +409,21 @@ bool wxDatePickerCtrlGeneric::SetDateRange(const wxDateTime& lowerdate, const wxDateTime& upperdate) { - return m_popup->SetDateRange(lowerdate, upperdate); + if ( !m_popup->SetDateRange(lowerdate, upperdate) ) + return false; + + // If the limits were, check that our current value lies between them and + // adjust it if it doesn't. + const wxDateTime old = GetValue(); + if ( old.IsValid() ) + { + if ( lowerdate.IsValid() && old < lowerdate ) + SetValue(lowerdate); + else if ( upperdate.IsValid() && old > upperdate ) + SetValue(upperdate); + } + + return true; } @@ -436,7 +450,7 @@ bool wxDatePickerCtrlGeneric::GetRange(wxDateTime *dt1, wxDateTime *dt2) const void wxDatePickerCtrlGeneric::SetRange(const wxDateTime &dt1, const wxDateTime &dt2) { - m_popup->SetDateRange(dt1, dt2); + SetDateRange(dt1, dt2); } wxCalendarCtrl *wxDatePickerCtrlGeneric::GetCalendar() const