#if wxUSE_CHOICE
#include "wx/choice.h"
-#include "wx/menu.h"
+
+#ifndef WX_PRECOMP
+ #include "wx/menu.h"
+ #include "wx/dcclient.h"
+#endif
+
#include "wx/mac/uma.h"
extern MenuHandle NewUniqueMenu() ;
int wxChoice::FindString( const wxString& s, bool bCase ) const
{
+#if !wxUSE_STL
+ // Avoid assert for non-default args passed to sorted array Index
+ if ( HasFlag(wxCB_SORT) )
+ bCase = true;
+#endif
+
return m_strings.Index( s , bCase ) ;
}
int wLine;
#if TARGET_CARBON
- long metric ;
+ SInt32 metric ;
GetThemeMetric( kThemeMetricPopupButtonHeight , &metric );
lbHeight = metric ;
#endif
{
+#if wxMAC_USE_CORE_GRAPHICS
+ wxClientDC dc(const_cast<wxChoice*>(this));
+#else
wxMacPortStateHelper st( UMAGetWindowPort( (WindowRef) MacGetTopLevelWindowRef() ) ) ;
if ( m_font.Ok() )
{
::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 ;
#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 ;
+#else
// And just a bit more
int cx = ::TextWidth( "X" , 0 , 1 ) ;
+#endif
lbWidth += cx ;
}