Browse files

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: c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
  • Loading branch information...
1 parent 12a4c7d commit 259dbbbec814da85d56f33c41ded7c144571edf6 @vadz vadz committed May 28, 2012
Showing with 13 additions and 1 deletion.
  1. +13 −1 src/generic/datectlg.cpp
@@ -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

0 comments on commit 259dbbb

Please sign in to comment.