X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/21fd55291b631eae9ccfd78866616aca6e573ebe..d23a4aa78189bdbc15925a11078291c2722ca473:/src/mac/carbon/button.cpp diff --git a/src/mac/carbon/button.cpp b/src/mac/carbon/button.cpp index 94610153a1..6c3d6f2649 100644 --- a/src/mac/carbon/button.cpp +++ b/src/mac/carbon/button.cpp @@ -77,30 +77,44 @@ void wxButton::SetDefault() wxSize wxButton::DoGetBestSize() const { - wxSize sz = GetDefaultSize() ; - - int charspace = 8 ; - if ( GetWindowVariant() == wxWINDOW_VARIANT_NORMAL || GetWindowVariant() == wxWINDOW_VARIANT_LARGE ) - { - sz.y = 20 ; - charspace = 10 ; - } - else if ( GetWindowVariant() == wxWINDOW_VARIANT_SMALL ) - { - sz.y = 17 ; - charspace = 8 ; - } - else if ( GetWindowVariant() == wxWINDOW_VARIANT_MINI ) - { - sz.y = 15 ; - charspace = 8 ; - } + wxSize sz = GetDefaultSize() ; + + int charspace = 8 ; + if ( GetWindowVariant() == wxWINDOW_VARIANT_NORMAL || GetWindowVariant() == wxWINDOW_VARIANT_LARGE ) + { + sz.y = 20 ; + charspace = 10 ; + } + else if ( GetWindowVariant() == wxWINDOW_VARIANT_SMALL ) + { + sz.y = 17 ; + charspace = 8 ; + } + else if ( GetWindowVariant() == wxWINDOW_VARIANT_MINI ) + { + sz.y = 15 ; + charspace = 8 ; + } - int wBtn = m_label.Length() * charspace + 12 ; - - if (wBtn > sz.x) sz.x = wBtn; + Rect bestsize = { 0 , 0 , 0 , 0 } ; + short baselineoffset ; + ::GetBestControlRect( *m_peer , &bestsize , &baselineoffset ) ; - return sz ; + int wBtn = 0 ; + if ( EmptyRect( &bestsize ) ) + { + int wBtn = m_label.Length() * charspace + 12 ; + } + else + { + sz.x = bestsize.right - bestsize.left ; + sz.y = bestsize.bottom - bestsize.top ; + } + + if (wBtn > sz.x || ( GetWindowStyle() & wxBU_EXACTFIT) ) + sz.x = wBtn; + + return sz ; } wxSize wxButton::GetDefaultSize()