X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9d46359178b28cd86e189e877015a8e69ff5bbaa..0c1cc9483ecba053bc9a0983a4a8d48898e334f2:/src/mac/carbon/choice.cpp diff --git a/src/mac/carbon/choice.cpp b/src/mac/carbon/choice.cpp index 22bb683721..c395a39d19 100644 --- a/src/mac/carbon/choice.cpp +++ b/src/mac/carbon/choice.cpp @@ -50,14 +50,17 @@ bool wxChoice::Create(wxWindow *parent, const wxValidator& validator, const wxString& name ) { - return Create( - parent, id, pos, size, 0, NULL, - style, validator, name ); + if ( !Create( parent, id, pos, size, 0, NULL, style, validator, name ) ) + return false; Append( choices ); if ( !choices.empty() ) SetSelection( 0 ); + + SetInitialSize( size ); + + return true; } bool wxChoice::Create(wxWindow *parent, @@ -136,7 +139,7 @@ int wxChoice::DoInsertItems(const wxArrayStringsAdapter & items, UMAInsertMenuItem(MAC_WXHMENU( m_macPopUpMenuHandle ), items[i], - m_font.GetEncoding(), + GetFont().GetEncoding(), idx); m_datas.Insert( NULL, idx ); AssignNewItemClientData(idx, clientData, i, type); @@ -274,62 +277,28 @@ wxSize wxChoice::DoGetBestSize() const lbHeight = metric ; { -#if wxMAC_USE_CORE_GRAPHICS wxClientDC dc(const_cast(this)); -#else - wxMacPortStateHelper st( UMAGetWindowPort( (WindowRef) MacGetTopLevelWindowRef() ) ) ; - if ( m_font.Ok() ) - { - ::TextFont( m_font.MacGetFontNum() ) ; - ::TextSize( m_font.MacGetFontSize() ) ; - ::TextFace( m_font.MacGetFontStyle() ) ; - } - else - { - ::TextFont( kFontIDMonaco ) ; - ::TextSize( 9 ) ; - ::TextFace( 0 ) ; - } -#endif + // Find the widest line for(unsigned int i = 0; i < GetCount(); i++) { wxString str(GetString(i)); -#if wxMAC_USE_CORE_GRAPHICS + wxCoord width, height ; dc.GetTextExtent( str , &width, &height); wLine = width ; -#else -#if wxUSE_UNICODE - Point bounds = { 0, 0 } ; - SInt16 baseline ; - - ::GetThemeTextDimensions( wxMacCFStringHolder( str , m_font.GetEncoding() ) , - kThemeCurrentPortFont, - kThemeStateActive, - false, - &bounds, - &baseline ); - - wLine = bounds.h ; -#else - wLine = ::TextWidth( str.c_str() , 0 , str.length() ) ; -#endif -#endif + lbWidth = wxMax( lbWidth, wLine ) ; } // Add room for the popup arrow lbWidth += 2 * lbHeight ; -#if wxMAC_USE_CORE_GRAPHICS + wxCoord width, height ; dc.GetTextExtent( wxT("X"), &width, &height); int cx = width ; lbHeight += 4; -#else - // And just a bit more - int cx = ::TextWidth( "X" , 0 , 1 ) ; -#endif + lbWidth += cx ; }