]> git.saurik.com Git - wxWidgets.git/commitdiff
support for plug-in unloading, closes #10836
authorStefan Csomor <csomor@advancedconcepts.ch>
Tue, 18 Aug 2009 15:54:36 +0000 (15:54 +0000)
committerStefan Csomor <csomor@advancedconcepts.ch>
Tue, 18 Aug 2009 15:54:36 +0000 (15:54 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61701 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/osx/carbon/button.cpp
src/osx/carbon/stattext.cpp

index 956ca32257990bdfce12fbe3c9efe4633d5e3fa1..b2f0567d2b4249d706ae0a579d9cd01d76d26582 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 );
         }
index 14b10a381238d3a54bec268f4a6478424e5866e2..e51b2af2b1167da54ebaf032e043393247f5ffbf 100644 (file)
@@ -65,14 +65,21 @@ wxSize wxStaticText::DoGetBestSize() const
         OSStatus err = m_peer->GetData<ControlFontStyleRec>( kControlEntireControl, kControlFontStyleTag, &controlFont );
         verify_noerr( err );
 
-        wxCFStringRef str( m_label,  GetFont().GetEncoding() );
-
 #if wxOSX_USE_ATSU_TEXT
         SInt16 baseline;
         if ( m_font.MacGetThemeFontID() != kThemeCurrentPortFont )
         {
+            // 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() );
+            
             err = GetThemeTextDimensions(
-                (!m_label.empty() ? (CFStringRef)str : CFSTR(" ")),
+                (CFStringRef)str,
                 m_font.MacGetThemeFontID(), kThemeStateActive, false, &bounds, &baseline );
             verify_noerr( err );
         }