]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/carbon/choice.cpp
fixing -fvisibility-inlines-hidden problem (IsOk function didn't get exported)
[wxWidgets.git] / src / mac / carbon / choice.cpp
index f2173eb03ce648f273d0f1b15a4fab6d8b584a0e..b0ba01d97debc5e1cddc9b5957889e335439a923 100644 (file)
@@ -17,6 +17,7 @@
 
 #ifndef WX_PRECOMP
     #include "wx/menu.h"
+    #include "wx/dcclient.h"
 #endif
 
 #include "wx/mac/uma.h"
@@ -100,7 +101,7 @@ bool wxChoice::Create(wxWindow *parent,
         SetSelection( 0 );
 
     // Needed because it is a wxControlWithItems
-    SetBestSize( size );
+    SetInitialSize( size );
 
     return true;
 }
@@ -300,13 +301,16 @@ wxSize wxChoice::DoGetBestSize() const
     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() )
         {
@@ -320,12 +324,16 @@ wxSize wxChoice::DoGetBestSize() const
             ::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 ;
@@ -341,15 +349,21 @@ wxSize wxChoice::DoGetBestSize() const
 #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 ;
     }