- int wBtn;
- if ( EmptyRect( &bestsize ) || ( GetWindowStyle() & wxBU_EXACTFIT) )
- {
- Point bounds;
-
- ControlFontStyleRec controlFont;
- 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 )
- {
- err = GetThemeTextDimensions(
- (!m_label.empty() ? (CFStringRef)str : CFSTR(" ")),
- m_font.MacGetThemeFontID(), kThemeStateActive, false, &bounds, &baseline );
- verify_noerr( err );
- }
- else
-#endif
- {
- wxClientDC dc(const_cast<wxButton*>(this));
- wxCoord width, height ;
- dc.GetTextExtent( m_label , &width, &height);
- bounds.h = width;
- bounds.v = height;
- }
-
- wBtn = bounds.h + sz.y;
- }
- else
- {
- wBtn = bestsize.right - bestsize.left ;
- // non 'normal' window variants don't return the correct height
- // sz.y = bestsize.bottom - bestsize.top ;
- }
- if ((wBtn > sz.x) || ( GetWindowStyle() & wxBU_EXACTFIT))
- sz.x = wBtn;
-#endif