m_peer->SetData<MenuHandle>( kControlNoPart , kControlPopupButtonMenuHandleTag , (MenuHandle) m_macPopUpMenuHandle ) ;
m_peer->SetValueAndRange( n > 0 ? 1 : 0 , 0 , 0 ) ;
MacPostControlCreate(pos,size) ;
- // TODO wxCB_SORT
+
+ if ( style & wxCB_SORT )
+ {
+ m_strings = wxArrayString(1) ; // autosort
+ }
+
for ( int i = 0; i < n; i++ )
{
Append(choices[i]);
// ----------------------------------------------------------------------------
int wxChoice::DoAppend(const wxString& item)
{
- UMAAppendMenuItem(MAC_WXHMENU( m_macPopUpMenuHandle ) , item, m_font.GetEncoding() );
- m_strings.Add( item ) ;
- m_datas.Add( NULL ) ;
- int index = m_strings.GetCount() - 1 ;
+ size_t index = m_strings.Add( item ) ;
+ m_datas.Insert( NULL , index ) ;
+ UMAInsertMenuItem(MAC_WXHMENU( m_macPopUpMenuHandle ) , item, m_font.GetEncoding() , index );
DoSetItemClientData( index , NULL ) ;
m_peer->SetMaximum( GetCount() ) ;
return index ;
if (pos == GetCount())
return DoAppend(item);
- UMAAppendMenuItem(MAC_WXHMENU( m_macPopUpMenuHandle ) , item, m_font.GetEncoding() );
+ UMAInsertMenuItem(MAC_WXHMENU( m_macPopUpMenuHandle ) , item, m_font.GetEncoding() , pos );
m_strings.Insert( item, pos ) ;
m_datas.Insert( NULL, pos ) ;
DoSetItemClientData( pos , NULL ) ;
int wxChoice::FindString(const wxString& s) const
{
- for( int i = 0 ; i < GetCount() ; i++ )
- {
- if ( GetString( i ).IsSameAs(s, false) )
- return i ;
- }
- return wxNOT_FOUND ;
+ return m_strings.Index( s , true , false) ;
}
void wxChoice::SetString(int n, const wxString& s)
{
- wxFAIL_MSG(wxT("wxChoice::SetString() not yet implemented"));
-#if 0 // should do this, but no Insert() so far
- Delete(n);
- Insert(n + 1, s);
-#endif
+ m_strings[n] = s ;
+ // apple menu pos is 1-based
+ UMASetMenuItemText( MAC_WXHMENU(m_macPopUpMenuHandle) , n + 1 , s , wxFont::GetDefaultEncoding() ) ;
}
wxString wxChoice::GetString(int n) const