From: Julian Smart Date: Sun, 2 Feb 2003 14:47:04 +0000 (+0000) Subject: Applied patch [ 670782 ] Combobox uses popup window width X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/e2ca829e7dc84e32a0949cbd852adf9b59cacd0b?ds=sidebyside Applied patch [ 670782 ] Combobox uses popup window width (wxUniv) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@19070 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/include/wx/univ/combobox.h b/include/wx/univ/combobox.h index 532073b460..2bb7faccb6 100644 --- a/include/wx/univ/combobox.h +++ b/include/wx/univ/combobox.h @@ -83,6 +83,8 @@ public: // called immediately after the control is shown virtual void OnShow() = 0; + virtual wxCoord GetBestWidth() const {return 0; } + protected: wxComboControl *m_combo; }; diff --git a/src/univ/combobox.cpp b/src/univ/combobox.cpp index 74b01d4174..4f7263b30c 100644 --- a/src/univ/combobox.cpp +++ b/src/univ/combobox.cpp @@ -125,6 +125,7 @@ public: virtual bool SetSelection(const wxString& value); virtual wxControl *GetControl() { return this; } virtual void OnShow(); + virtual wxCoord wxComboListBox::GetBestWidth() const; protected: // we shouldn't return height too big from here @@ -300,8 +301,15 @@ wxSize wxComboControl::DoGetBestClientSize() const { wxSize sizeBtn = m_btn->GetBestSize(), sizeText = m_text->GetBestSize(); + wxCoord widthPopup = 0; - return wxSize(sizeText.x + g_comboMargin + sizeBtn.x, wxMax(sizeBtn.y, sizeText.y)); + if (m_popup) + { + widthPopup = m_popup->GetBestWidth(); + } + + return wxSize(wxMax(sizeText.x + g_comboMargin + sizeBtn.x, widthPopup), + wxMax(sizeBtn.y, sizeText.y)); } void wxComboControl::DoMoveWindow(int x, int y, int width, int height) @@ -615,6 +623,12 @@ void wxComboListBox::OnMouseMove(wxMouseEvent& event) } } +wxCoord wxComboListBox::GetBestWidth() const +{ + wxSize size = wxListBox::GetBestSize(); + return size.x; +} + wxSize wxComboListBox::DoGetBestClientSize() const { // don't return size too big or we risk to not fit on the screen