]> git.saurik.com Git - wxWidgets.git/blobdiff - src/osx/carbon/button.cpp
add member for sheetdialog
[wxWidgets.git] / src / osx / carbon / button.cpp
index 956ca32257990bdfce12fbe3c9efe4633d5e3fa1..2924a24614c9313aa4255fce5f12387567d94984 100644 (file)
@@ -55,7 +55,7 @@ wxSize wxButton::DoGetBestSize() const
 
 #if wxOSX_USE_CARBON
     Rect    bestsize = { 0 , 0 , 0 , 0 } ;
-    m_peer->GetBestRect( &bestsize ) ;
+    GetPeer()->GetBestRect( &bestsize ) ;
 
     int wBtn;
     if ( EmptyRect( &bestsize ) || ( GetWindowStyle() & wxBU_EXACTFIT) )
@@ -63,17 +63,24 @@ wxSize wxButton::DoGetBestSize() const
         Point bounds;
 
         ControlFontStyleRec controlFont;
-        OSStatus err = m_peer->GetData<ControlFontStyleRec>( kControlEntireControl, kControlFontStyleTag, &controlFont );
+        OSStatus err = GetPeer()->GetData<ControlFontStyleRec>( kControlEntireControl, kControlFontStyleTag, &controlFont );
         verify_noerr( err );
 
-        wxCFStringRef str( m_label,  GetFont().GetEncoding() );
+        // GetThemeTextDimensions will cache strings and the documentation
+        // says not to use the NoCopy string creation calls.
+        // This also means that we can't use CFSTR without
+        // -fno-constant-cfstrings if the library might be unloaded,
+        // as GetThemeTextDimensions may cache a pointer to our
+        // unloaded segment.
+        wxCFStringRef str( !m_label.empty() ? m_label : wxString(" "),
+                          GetFont().GetEncoding() );
 
 #if wxOSX_USE_ATSU_TEXT
         SInt16 baseline;
         if ( m_font.MacGetThemeFontID() != kThemeCurrentPortFont )
         {
             err = GetThemeTextDimensions(
-                (!m_label.empty() ? (CFStringRef)str : CFSTR(" ")),
+                (CFStringRef)str,
                 m_font.MacGetThemeFontID(), kThemeStateActive, false, &bounds, &baseline );
             verify_noerr( err );
         }
@@ -148,6 +155,7 @@ wxWidgetImplType* wxWidgetImpl::CreateButton( wxWindowMac* wxpeer,
                 break;
             case wxWINDOW_VARIANT_SMALL:
                 maxHeight = 17;
+                break;
             case wxWINDOW_VARIANT_MINI:
                 maxHeight = 15;
         }