if ( !s.empty() )
{
- pDt->ParseFormat(s.c_str(), m_format);
+ pDt->ParseFormat(s, m_format);
if ( !pDt->IsValid() )
return false;
}
// 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)
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;
- if (m_combo)
- parts.push_back(m_combo);
- if (m_popup)
- parts.push_back(m_popup);
+ parts.push_back(m_combo);
+ parts.push_back(m_popup);
return parts;
}