X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/524c47aa3adf2af11a3069fd5da035a604f08f66..0a761908f21cbd7541da9d784985df5ade450545:/src/osx/choice_osx.cpp diff --git a/src/osx/choice_osx.cpp b/src/osx/choice_osx.cpp index 1481b1419c..c0540c58a3 100644 --- a/src/osx/choice_osx.cpp +++ b/src/osx/choice_osx.cpp @@ -4,7 +4,7 @@ // Author: Stefan Csomor // Modified by: // Created: 1998-01-01 -// RCS-ID: $Id: choice.cpp 54129 2008-06-11 19:30:52Z SC $ +// RCS-ID: $Id$ // Copyright: (c) Stefan Csomor // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// @@ -22,8 +22,6 @@ #include "wx/osx/private.h" -IMPLEMENT_DYNAMIC_CLASS(wxChoice, wxControlWithItems) - wxChoice::~wxChoice() { if ( HasClientObjectData() ) @@ -72,11 +70,11 @@ bool wxChoice::Create(wxWindow *parent, 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 ); @@ -126,12 +124,15 @@ int wxChoice::DoInsertItems(const wxArrayStringsAdapter & items, 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; } @@ -142,12 +143,12 @@ void wxChoice::DoDeleteOneItem(unsigned int n) if ( HasClientObjectData() ) delete GetClientObject( n ); - + m_popUpMenu->Delete( m_popUpMenu->FindItemByPosition( 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 ); } // ---------------------------------------------------------------------------- @@ -218,19 +219,15 @@ 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]; } -bool wxChoice::HandleClicked( double timestampsec ) +bool wxChoice::OSXHandleClicked( double WXUNUSED(timestampsec) ) { wxCommandEvent event( wxEVT_COMMAND_CHOICE_SELECTED, m_windowId ); @@ -256,7 +253,8 @@ bool wxChoice::HandleClicked( double timestampsec ) wxSize wxChoice::DoGetBestSize() const { int lbWidth = GetCount() > 0 ? 20 : 100; // some defaults - int lbHeight = 20; + wxSize baseSize = wxWindow::DoGetBestSize(); + int lbHeight = baseSize.y; int wLine; { @@ -280,7 +278,6 @@ wxSize wxChoice::DoGetBestSize() const wxCoord width, height ; dc.GetTextExtent( wxT("X"), &width, &height); int cx = width ; - lbHeight += 4; lbWidth += cx ; }