]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/choice.cpp
Check wxSIZE_ALLOW_MINUS_ONE for x and y too.
[wxWidgets.git] / src / mac / choice.cpp
index fdd9b43da6c49ac2135d59a0441b2b6d265cc6be..c963dcad3271faf238ae96a51b3ea303e50c752a 100644 (file)
@@ -46,6 +46,9 @@ bool wxChoice::Create(wxWindow *parent, wxWindowID id,
            const wxValidator& validator,
            const wxString& name)
 {
+    if ( !wxChoiceBase::Create(parent, id, pos, size, style, validator, name) )
+        return false;
+
     Rect bounds ;
     Str255 title ;
 
@@ -60,6 +63,7 @@ bool wxChoice::Create(wxWindow *parent, wxWindowID id,
     if ( n > 0 )
         SetControl32BitValue( (ControlHandle) m_macControl , 1 ) ;
     MacPostControlCreate() ;
+    // TODO wxCB_SORT
     for ( int i = 0; i < n; i++ )
     {
         Append(choices[i]);
@@ -177,8 +181,12 @@ void wxChoice::SetString(int n, const wxString& s)
 
 wxString wxChoice::GetString(int n) const
 {
+    wxCHECK_MSG( n >= 0 && (size_t)n < m_strings.GetCount(), _T(""),
+                    _T("wxChoice::GetString(): invalid index") );
+
     return m_strings[n] ;
 }
+
 // ----------------------------------------------------------------------------
 // client data
 // ----------------------------------------------------------------------------
@@ -264,8 +272,7 @@ wxSize wxChoice::DoGetBestSize() const
                 &baseline );
             wLine = bounds.h ;
         #else
-            wxCharBuffer text = wxMacStringToCString( str ) ;
-            wLine = ::TextWidth( text , 0 , strlen(text) ) ;
+            wLine = ::TextWidth( str.c_str() , 0 , str.Length() ) ;
         #endif
             lbWidth = wxMax(lbWidth, wLine);
         }