X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/de0d209531f148e8d4b18149d0a3ca25dbc88075..411a1c35ff2e9be0bef6e2997f00dded357f2906:/src/osx/carbon/combobox.cpp?ds=sidebyside diff --git a/src/osx/carbon/combobox.cpp b/src/osx/carbon/combobox.cpp index 53b729485e..f8223c9108 100644 --- a/src/osx/carbon/combobox.cpp +++ b/src/osx/carbon/combobox.cpp @@ -57,9 +57,12 @@ public: : wxTextCtrl( cb , 1 ) { m_cb = cb; - SetTriggerOnSetValue( false ); } + void ForwardEnableTextChangedEvents(bool enable) + { + EnableTextChangedEvents(enable); + } protected: void OnChar( wxKeyEvent& event ) { @@ -147,6 +150,7 @@ protected: event.Skip(); } + private: wxComboBox *m_cb; @@ -257,12 +261,11 @@ wxSize wxComboBox::DoGetBestSize() const if ( m_text != NULL ) { wxSize sizeText = m_text->GetBestSize(); - if (sizeText.y > size.y) - size.y = sizeText.y; + if (sizeText.y + 2 * TEXTFOCUSBORDER > size.y) + size.y = sizeText.y + 2 * TEXTFOCUSBORDER; size.x = m_choice->GetPopupWidth() + sizeText.x + MARGIN; size.x += TEXTFOCUSBORDER ; - size.y += 2 * TEXTFOCUSBORDER ; } else { @@ -287,9 +290,13 @@ void wxComboBox::DoMoveWindow(int x, int y, int width, int height) { wxCoord wText = width - m_choice->GetPopupWidth() - MARGIN; m_text->SetSize(TEXTFOCUSBORDER, TEXTFOCUSBORDER, wText, -1); + wxSize tSize = m_text->GetSize(); + wxSize cSize = m_choice->GetSize(); + + int yOffset = ( tSize.y + 2 * TEXTFOCUSBORDER - cSize.y ) / 2; // put it at an inset of 1 to have outer area shadows drawn as well - m_choice->SetSize(TEXTFOCUSBORDER + wText + MARGIN - 1 , TEXTFOCUSBORDER, m_choice->GetPopupWidth() , -1); + m_choice->SetSize(TEXTFOCUSBORDER + wText + MARGIN - 1 , yOffset, m_choice->GetPopupWidth() , -1); } } @@ -394,6 +401,12 @@ bool wxComboBox::Create(wxWindow *parent, return true; } +void wxComboBox::EnableTextChangedEvents(bool enable) +{ + if ( m_text ) + m_text->ForwardEnableTextChangedEvents(enable); +} + wxString wxComboBox::DoGetValue() const { wxCHECK_MSG( m_text, wxString(), "can't be called for read-only combobox" );