Improve wxDatePickerCtrlGeneric best size calculation.

Make the control just wide enough to fully show the contents of its text part.

This is still not ideal as we don't take into account wxComboCtrl internal
complications but better than before.

Closes #14342.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@71579 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2012-05-28 19:38:02 +00:00
parent 5d8cdb5d1c
commit 2060e34cd2

View File

@ -379,7 +379,19 @@ 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