From: Stefan Csomor Date: Fri, 25 Jun 2004 11:33:39 +0000 (+0000) Subject: best size handling fix X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/6d325d81bc739bf545df5c00183fc7d5880b8a43?ds=sidebyside best size handling fix git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@28022 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/mac/carbon/button.cpp b/src/mac/carbon/button.cpp index f13104ae68..6c3d6f2649 100644 --- a/src/mac/carbon/button.cpp +++ b/src/mac/carbon/button.cpp @@ -77,31 +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 || ( GetWindowStyle() & wxBU_EXACTFIT) ) - 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()