From 2060e34cd268b962a2836755e2066803887597b5 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Mon, 28 May 2012 19:38:02 +0000 Subject: [PATCH] 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 --- src/generic/datectlg.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/generic/datectlg.cpp b/src/generic/datectlg.cpp index 869ef3aad8..56a79df9d2 100644 --- a/src/generic/datectlg.cpp +++ b/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 -- 2.47.2