X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/facd6764872eede45605ba7c9dfa0e1d0c708fa2..53a6ac21b84c24bbfc2f03500f7edab73f8feff8:/src/mac/carbon/combobox.cpp?ds=inline diff --git a/src/mac/carbon/combobox.cpp b/src/mac/carbon/combobox.cpp index 795874147e..f158ee702e 100644 --- a/src/mac/carbon/combobox.cpp +++ b/src/mac/carbon/combobox.cpp @@ -40,7 +40,11 @@ MenuHandle NewUniqueMenu() // the margin between the text control and the choice static const wxCoord MARGIN = 2; +#if TARGET_API_MAC_OSX +static const int POPUPWIDTH = 24; +#else static const int POPUPWIDTH = 18; +#endif static const int POPUPHEIGHT = 23; @@ -55,6 +59,9 @@ public: : wxTextCtrl( cb , 1 ) { m_cb = cb; + + // remove the default minsize, the combobox will have one instead + SetSizeHints(-1,-1); } protected: @@ -135,6 +142,9 @@ public: : wxChoice( cb , 1 ) { m_cb = cb; + + // remove the default minsize, the combobox will have one instead + SetSizeHints(-1,-1); } protected: @@ -149,6 +159,13 @@ protected: event2.SetString(m_cb->GetStringSelection()); m_cb->ProcessCommand(event2); } + virtual wxSize DoGetBestSize() const + { + wxSize sz = wxChoice::DoGetBestSize() ; + if (! m_cb->HasFlag(wxCB_READONLY) ) + sz.x = POPUPWIDTH; + return sz ; + } private: wxComboBox *m_cb; @@ -290,7 +307,7 @@ bool wxComboBox::Create(wxWindow *parent, wxWindowID id, } m_choice = new wxComboBoxChoice(this, style ); - + m_choice->SetSizeHints( wxSize( POPUPWIDTH , POPUPHEIGHT ) ) ; wxSize csize = size; if ( style & wxCB_READONLY ) { @@ -311,6 +328,8 @@ bool wxComboBox::Create(wxWindow *parent, wxWindowID id, m_choice->DoAppend( choices[ i ] ); } + SetBestSize(csize); // Needed because it is a wxControlWithItems + return TRUE; } @@ -330,6 +349,11 @@ wxString wxComboBox::GetValue() const return result; } +int wxComboBox::GetCount() const +{ + return m_choice->GetCount() ; +} + void wxComboBox::SetValue(const wxString& value) { int s = FindString (value); @@ -531,12 +555,13 @@ void wxComboBox::SetString(int n, const wxString& s) } -void wxComboBox::MacHandleControlClick( WXWidget WXUNUSED(control) , wxInt16 WXUNUSED(controlpart) , bool WXUNUSED(mouseStillDown)) +wxInt32 wxComboBox::MacControlHit(WXEVENTHANDLERREF WXUNUSED(handler) , WXEVENTREF WXUNUSED(event) ) { wxCommandEvent event(wxEVT_COMMAND_COMBOBOX_SELECTED, m_windowId ); event.SetInt(GetSelection()); event.SetEventObject(this); event.SetString(GetStringSelection()); ProcessCommand(event); + return noErr ; }