X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6e7a89af32d371a2f90832f6e20d3da3ea1ce062..4eb5a0ec0421b3dba1c46c1dcb27a711af4bec36:/src/osx/cocoa/stattext.mm?ds=sidebyside diff --git a/src/osx/cocoa/stattext.mm b/src/osx/cocoa/stattext.mm index c1ed173666..b3d5f89ebc 100644 --- a/src/osx/cocoa/stattext.mm +++ b/src/osx/cocoa/stattext.mm @@ -29,53 +29,35 @@ wxSize wxStaticText::DoGetBestSize() const { - Point bounds; -#if wxOSX_USE_CARBON - Rect bestsize = { 0 , 0 , 0 , 0 } ; - - // try the built-in best size if available - Boolean former = m_peer->GetData( kControlStaticTextIsMultilineTag); - m_peer->SetData( kControlStaticTextIsMultilineTag, (Boolean)0 ); - m_peer->GetBestRect( &bestsize ) ; - m_peer->SetData( kControlStaticTextIsMultilineTag, former ); - if ( !EmptyRect( &bestsize ) ) +Point bounds; + +#if wxOSX_USE_ATSU_TEXT + OSStatus err = noErr; + wxCFStringRef str( m_label, GetFont().GetEncoding() ); + + SInt16 baseline; + if ( m_font.MacGetThemeFontID() != kThemeCurrentPortFont ) { - bounds.h = bestsize.right - bestsize.left ; - bounds.v = bestsize.bottom - bestsize.top ; + err = GetThemeTextDimensions( + (!m_label.empty() ? (CFStringRef)str : CFSTR(" ")), + m_font.MacGetThemeFontID(), kThemeStateActive, false, &bounds, &baseline ); + verify_noerr( err ); } else #endif { -#if wxOSX_USE_CARBON - ControlFontStyleRec controlFont; - OSStatus err = m_peer->GetData( kControlEntireControl, kControlFontStyleTag, &controlFont ); - verify_noerr( err ); + wxClientDC dc(const_cast(this)); + wxCoord width, height ; + dc.GetTextExtent( m_label , &width, &height); + // Some labels seem to have their last characters + // stripped out. Adding 4 pixels seems to be enough to fix this. + bounds.h = width+4; + bounds.v = height; + } - wxCFStringRef str( m_label, GetFont().GetEncoding() ); + if ( m_label.empty() ) + bounds.h = 0; -#if wxOSX_USE_ATSU_TEXT - SInt16 baseline; - if ( m_font.MacGetThemeFontID() != kThemeCurrentPortFont ) - { - err = GetThemeTextDimensions( - (!m_label.empty() ? (CFStringRef)str : CFSTR(" ")), - m_font.MacGetThemeFontID(), kThemeStateActive, false, &bounds, &baseline ); - verify_noerr( err ); - } - else -#endif -#endif - { - wxClientDC dc(const_cast(this)); - wxCoord width, height ; - dc.GetTextExtent( m_label , &width, &height); - bounds.h = width; - bounds.v = height; - } - - if ( m_label.empty() ) - bounds.h = 0; - } bounds.h += MacGetLeftBorderSize() + MacGetRightBorderSize(); bounds.v += MacGetTopBorderSize() + MacGetBottomBorderSize();