]> git.saurik.com Git - wxWidgets.git/commitdiff
Improve wxDatePickerCtrlGeneric best size calculation.
authorVadim Zeitlin <vadim@wxwidgets.org>
Mon, 28 May 2012 19:38:02 +0000 (19:38 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Mon, 28 May 2012 19:38:02 +0000 (19:38 +0000)
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

index 869ef3aad866f359c2e56697b5370e33a650eaf8..56a79df9d23d98911d16f5ac28e42afa4fa7108a 100644 (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