X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4a40cd9bae5e4e76fadb6188b399905028a02bc7..ad653fa23069c5d9378247084f03c9a718c3ad62:/src/generic/datectlg.cpp diff --git a/src/generic/datectlg.cpp b/src/generic/datectlg.cpp index a862229255..56a79df9d2 100644 --- a/src/generic/datectlg.cpp +++ b/src/generic/datectlg.cpp @@ -38,6 +38,7 @@ #include "wx/combo.h" #include "wx/datectrl.h" +#include "wx/generic/datectrl.h" // ---------------------------------------------------------------------------- // constants @@ -129,7 +130,7 @@ public: if ( !s.empty() ) { - pDt->ParseFormat(s.c_str(), m_format); + pDt->ParseFormat(s, m_format); if ( !pDt->IsValid() ) return false; } @@ -208,11 +209,15 @@ private: // functions honours wxDP_SHOWCENTURY flag. wxString GetLocaleDateFormat() const { +#if wxUSE_INTL wxString fmt = wxLocale::GetInfo(wxLOCALE_SHORT_DATE_FMT); if ( HasDPFlag(wxDP_SHOWCENTURY) ) fmt.Replace("%y", "%Y"); return fmt; +#else // !wxUSE_INTL + return wxT("x"); +#endif // wxUSE_INTL/!wxUSE_INTL } bool SetFormat(const wxString& fmt) @@ -374,7 +379,27 @@ bool wxDatePickerCtrlGeneric::Destroy() wxSize wxDatePickerCtrlGeneric::DoGetBestSize() const { - return m_combo->GetBestSize(); + // A better solution would be to use a custom text control that would have + // the best size determined by the current date format and let m_combo take + // care of the best size computation, but this isn't easily possible with + // wxComboCtrl currently, so we compute our own best size here instead even + // if this means adding some extra margins to account for text control + // borders, space between it and the button and so on. + wxSize size = m_combo->GetButtonSize(); + + wxTextCtrl* const text = m_combo->GetTextCtrl(); + size.x += text->GetTextExtent(text->GetValue()).x; + size.x += 2*text->GetCharWidth(); // This is the margin mentioned above. + + return size; +} + +wxWindowList wxDatePickerCtrlGeneric::GetCompositeWindowParts() const +{ + wxWindowList parts; + parts.push_back(m_combo); + parts.push_back(m_popup); + return parts; } // ----------------------------------------------------------------------------