best size handling fix

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@28022 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Stefan Csomor
2004-06-25 11:33:39 +00:00
parent 2d1760d30f
commit 6d325d81bc

View File

@@ -77,31 +77,44 @@ void wxButton::SetDefault()
wxSize wxButton::DoGetBestSize() const wxSize wxButton::DoGetBestSize() const
{ {
wxSize sz = GetDefaultSize() ; wxSize sz = GetDefaultSize() ;
int charspace = 8 ; int charspace = 8 ;
if ( GetWindowVariant() == wxWINDOW_VARIANT_NORMAL || GetWindowVariant() == wxWINDOW_VARIANT_LARGE ) if ( GetWindowVariant() == wxWINDOW_VARIANT_NORMAL || GetWindowVariant() == wxWINDOW_VARIANT_LARGE )
{ {
sz.y = 20 ; sz.y = 20 ;
charspace = 10 ; charspace = 10 ;
} }
else if ( GetWindowVariant() == wxWINDOW_VARIANT_SMALL ) else if ( GetWindowVariant() == wxWINDOW_VARIANT_SMALL )
{ {
sz.y = 17 ; sz.y = 17 ;
charspace = 8 ; charspace = 8 ;
} }
else if ( GetWindowVariant() == wxWINDOW_VARIANT_MINI ) else if ( GetWindowVariant() == wxWINDOW_VARIANT_MINI )
{ {
sz.y = 15 ; sz.y = 15 ;
charspace = 8 ; charspace = 8 ;
} }
int wBtn = m_label.Length() * charspace + 12 ; Rect bestsize = { 0 , 0 , 0 , 0 } ;
short baselineoffset ;
::GetBestControlRect( *m_peer , &bestsize , &baselineoffset ) ;
if (wBtn > sz.x || ( GetWindowStyle() & wxBU_EXACTFIT) ) int wBtn = 0 ;
sz.x = wBtn; if ( EmptyRect( &bestsize ) )
{
int wBtn = m_label.Length() * charspace + 12 ;
}
else
{
sz.x = bestsize.right - bestsize.left ;
sz.y = bestsize.bottom - bestsize.top ;
}
return sz ; if (wBtn > sz.x || ( GetWindowStyle() & wxBU_EXACTFIT) )
sz.x = wBtn;
return sz ;
} }
wxSize wxButton::GetDefaultSize() wxSize wxButton::GetDefaultSize()