]> git.saurik.com Git - wxWidgets.git/commitdiff
best size handling fix
authorStefan Csomor <csomor@advancedconcepts.ch>
Fri, 25 Jun 2004 11:33:39 +0000 (11:33 +0000)
committerStefan Csomor <csomor@advancedconcepts.ch>
Fri, 25 Jun 2004 11:33:39 +0000 (11:33 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@28022 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/mac/carbon/button.cpp

index f13104ae68cfcab965f113d46edcd742625de3e7..6c3d6f26494921c5c2c0bb232485ee9da918586f 100644 (file)
@@ -77,31 +77,44 @@ void wxButton::SetDefault()
 
 wxSize wxButton::DoGetBestSize() const
 {
 
 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()
 }
 
 wxSize wxButton::GetDefaultSize()