- m_label = st ;
- wxString label ;
-
- if( wxApp::s_macDefaultEncodingIsPC )
- label = wxMacMakeMacStringFromPC( st ) ;
- else
- label = st ;
-
- ::UMASetControlData( m_macControl, kControlLabelPart, kControlStaticTextTextTag , (long) label.Length() , (char*)(const char*) label ) ;
- Refresh() ;
+ ControlFontStyleRec controlFont ;
+ verify_noerr( m_peer->GetData<ControlFontStyleRec>(kControlEntireControl , kControlFontStyleTag , &controlFont ) ) ;
+
+ Point bounds ;
+ SInt16 baseline ;
+ wxMacCFStringHolder str(m_label , m_font.GetEncoding() ) ;
+ if ( m_font.MacGetThemeFontID() != kThemeCurrentPortFont )
+ verify_noerr( GetThemeTextDimensions( (m_label.Length() > 0 ? ((CFStringRef) str ) : CFSTR(" ") ) , m_font.MacGetThemeFontID() , kThemeStateActive , false , &bounds , &baseline ) ) ;
+ else
+ {
+ wxMacWindowStateSaver sv( this ) ;
+ ::TextFont( m_font.MacGetFontNum() ) ;
+ ::TextSize( (short)( m_font.MacGetFontSize()) ) ;
+ ::TextFace( m_font.MacGetFontStyle() ) ;
+ verify_noerr( GetThemeTextDimensions( (m_label.Length() > 0 ? ((CFStringRef) str ) : CFSTR(" ") ) , kThemeCurrentPortFont , kThemeStateActive , false , &bounds , &baseline ) ) ;
+ }
+ if ( m_label.Length() == 0 )
+ bounds.h = 0 ;
+
+ bounds.h += MacGetLeftBorderSize() + MacGetRightBorderSize() ;
+ bounds.v += MacGetTopBorderSize() + MacGetBottomBorderSize() ;
+ return wxSize(bounds.h, bounds.v);