X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6e7a89af32d371a2f90832f6e20d3da3ea1ce062..55410bb4f67febe1ca20654f078ea4fb9a6223ae:/src/osx/cocoa/stattext.mm?ds=inline diff --git a/src/osx/cocoa/stattext.mm b/src/osx/cocoa/stattext.mm index c1ed173666..efb6e56343 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(); @@ -106,7 +88,6 @@ wxWidgetImplType* wxWidgetImpl::CreateStaticText( wxWindowMac* wxpeer, [v setDrawsBackground:NO]; wxWidgetCocoaImpl* c = new wxWidgetCocoaImpl( wxpeer, v ); - [v setImplementation:c]; return c; /* Rect bounds = wxMacGetBoundsForControl( wxpeer, pos, size );