]> git.saurik.com Git - wxWidgets.git/blobdiff - src/osx/carbon/button.cpp
Start on ShowWindowModal for OS X Cocoa. Not working properly as children do not...
[wxWidgets.git] / src / osx / carbon / button.cpp
index 956ca32257990bdfce12fbe3c9efe4633d5e3fa1..ea77565438ec6650021bb88c0f863d26711c1f4c 100644 (file)
@@ -66,14 +66,21 @@ wxSize wxButton::DoGetBestSize() const
         OSStatus err = m_peer->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;
         }