X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b5b208a1796ecf1b9ab267d200705b4f3b4d10e3..08670ea85abf4b4946a9ce64971b591d7b1ee30b:/src/osx/choice_osx.cpp?ds=sidebyside diff --git a/src/osx/choice_osx.cpp b/src/osx/choice_osx.cpp index f303ec637c..e610b8c86f 100644 --- a/src/osx/choice_osx.cpp +++ b/src/osx/choice_osx.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: src/osx/carbon/choice.cpp +// Name: src/osx/choice_osx.cpp // Purpose: wxChoice // Author: Stefan Csomor // Modified by: @@ -22,8 +22,6 @@ #include "wx/osx/private.h" -IMPLEMENT_DYNAMIC_CLASS(wxChoice, wxControlWithItems) - wxChoice::~wxChoice() { if ( HasClientObjectData() ) @@ -67,20 +65,20 @@ bool wxChoice::Create(wxWindow *parent, long style, const wxValidator& validator, const wxString& name ) -{ - m_macIsUserPane = false; - +{ + DontCreatePeer(); + if ( !wxChoiceBase::Create( parent, id, pos, size, style, validator, name ) ) return false; m_popUpMenu = new wxMenu(); m_popUpMenu->SetNoEventsMode(true); - m_peer = wxWidgetImpl::CreateChoice( this, parent, id, m_popUpMenu, pos, size, style, GetExtraStyle() ); + SetPeer(wxWidgetImpl::CreateChoice( this, parent, id, m_popUpMenu, pos, size, style, GetExtraStyle() )); MacPostControlCreate( pos, size ); -#if !wxUSE_STL +#if !wxUSE_STD_CONTAINERS if ( style & wxCB_SORT ) // autosort m_strings = wxArrayString( 1 ); @@ -111,7 +109,7 @@ int wxChoice::DoInsertItems(const wxArrayStringsAdapter & items, { unsigned int idx; -#if wxUSE_STL +#if wxUSE_STD_CONTAINERS if ( IsSorted() ) { wxArrayString::iterator @@ -120,18 +118,21 @@ int wxChoice::DoInsertItems(const wxArrayStringsAdapter & items, m_strings.insert( insertPoint, items[i] ); } else -#endif // wxUSE_STL +#endif // wxUSE_STD_CONTAINERS { idx = pos; m_strings.Insert( items[i], idx ); } - m_popUpMenu->Insert( idx, i+1, items[i] ); + wxString text = items[i]; + if (text == wxEmptyString) + text = " "; // menu items can't have empty labels + m_popUpMenu->Insert( idx, i+1, text ); m_datas.Insert( NULL, idx ); AssignNewItemClientData(idx, clientData, i, type); } - m_peer->SetMaximum( GetCount() ); + GetPeer()->SetMaximum( GetCount() ); return pos - 1; } @@ -147,7 +148,7 @@ void wxChoice::DoDeleteOneItem(unsigned int n) m_strings.RemoveAt( n ) ; m_datas.RemoveAt( n ) ; - m_peer->SetMaximum( GetCount() ) ; + GetPeer()->SetMaximum( GetCount() ) ; } @@ -161,7 +162,7 @@ void wxChoice::DoClear() m_strings.Empty() ; m_datas.Empty() ; - m_peer->SetMaximum( 0 ) ; + GetPeer()->SetMaximum( 0 ) ; } // ---------------------------------------------------------------------------- @@ -169,12 +170,12 @@ void wxChoice::DoClear() // ---------------------------------------------------------------------------- int wxChoice::GetSelection() const { - return m_peer->GetValue(); + return GetPeer()->GetValue(); } void wxChoice::SetSelection( int n ) { - m_peer->SetValue( n ); + GetPeer()->SetValue( n ); } // ---------------------------------------------------------------------------- @@ -188,7 +189,7 @@ unsigned int wxChoice::GetCount() const int wxChoice::FindString( const wxString& s, bool bCase ) const { -#if !wxUSE_STL +#if !wxUSE_STD_CONTAINERS // Avoid assert for non-default args passed to sorted array Index if ( IsSorted() ) bCase = true; @@ -218,15 +219,11 @@ wxString wxChoice::GetString(unsigned int n) const // ---------------------------------------------------------------------------- void wxChoice::DoSetItemClientData(unsigned int n, void* clientData) { - wxCHECK_RET( IsValid(n), wxT("wxChoice::DoSetItemClientData: invalid index") ); - m_datas[n] = (char*)clientData ; } void * wxChoice::DoGetItemClientData(unsigned int n) const { - wxCHECK_MSG( IsValid(n), NULL, wxT("wxChoice::DoGetClientData: invalid index") ); - return (void *)m_datas[n]; }