X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/bb4b11a2199e69d0d7797af69d25aa77b9519a54..db06cdc08cee40c72854d6a883cf017c2bcc670e:/src/common/pickerbase.cpp diff --git a/src/common/pickerbase.cpp b/src/common/pickerbase.cpp index cccaabc42e..ce17ad7da8 100644 --- a/src/common/pickerbase.cpp +++ b/src/common/pickerbase.cpp @@ -66,10 +66,13 @@ bool wxPickerBase::CreateBase(wxWindow *parent, // remove any border style from our style as wxPickerBase's window must be // invisible (user styles must be set on the textctrl or the platform-dependent picker) style &= ~wxBORDER_MASK; + if (!wxControl::Create(parent, id, pos, size, style | wxNO_BORDER | wxTAB_TRAVERSAL, validator, name)) return false; + SetMinSize( size ); + m_sizer = new wxBoxSizer(wxHORIZONTAL); if (HasFlag(wxPB_USE_TEXTCTRL)) @@ -120,8 +123,19 @@ void wxPickerBase::PostCreation() // associated with it - in that case it defaults to 0 m_sizer->Add(m_picker, HasTextCtrl() ? 0 : 1, GetDefaultPickerCtrlFlag(), 5); + // For aesthetic reasons, make sure the picker is at least as high as the + // associated text control and is always at least square. + const wxSize pickerBestSize(m_picker->GetBestSize()); + const wxSize textBestSize( HasTextCtrl() ? m_text->GetBestSize() : wxSize()); + wxSize pickerMinSize; + pickerMinSize.y = wxMax(pickerBestSize.y, textBestSize.y); + pickerMinSize.x = wxMax(pickerBestSize.x, pickerMinSize.y); + if ( pickerMinSize != pickerBestSize ) + m_picker->SetMinSize(pickerMinSize); + SetSizer(m_sizer); - SetMinSize( m_sizer->GetMinSize() ); + + SetInitialSize( GetMinSize() ); } #if wxUSE_TOOLTIPS