Rect bestsize = { 0 , 0 , 0 , 0 } ;
// try the built-in best size if available
- Boolean former = m_peer->GetData<Boolean>( kControlStaticTextIsMultilineTag);
- m_peer->SetData( kControlStaticTextIsMultilineTag, (Boolean)0 );
- m_peer->GetBestRect( &bestsize ) ;
- m_peer->SetData( kControlStaticTextIsMultilineTag, former );
+ Boolean former = GetPeer()->GetData<Boolean>( kControlStaticTextIsMultilineTag);
+ GetPeer()->SetData( kControlStaticTextIsMultilineTag, (Boolean)0 );
+ GetPeer()->GetBestRect( &bestsize ) ;
+ GetPeer()->SetData( kControlStaticTextIsMultilineTag, former );
+
if ( !EmptyRect( &bestsize ) )
{
bounds.h = bestsize.right - bestsize.left ;
{
#if wxOSX_USE_CARBON
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() );
-
#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 );
}