]> git.saurik.com Git - wxWidgets.git/commitdiff
Make wxBU_EXACTFIT fir the button text more exactly.
authorVadim Zeitlin <vadim@wxwidgets.org>
Sat, 27 Aug 2011 14:11:28 +0000 (14:11 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sat, 27 Aug 2011 14:11:28 +0000 (14:11 +0000)
Too big margins were added for the buttons with wxBU_EXACTFIT style making
them larger than strictly necessary. Reduce the margins to make them really
as small as possible.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@68922 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/msw/private/button.h
src/msw/anybutton.cpp

index 1e6336197d8229d0a12b017fc4ffb9e492228c64..2f344f2d53cb1bdea94274952491d831ff757deb 100644 (file)
@@ -44,7 +44,8 @@ void UpdateMultilineStyle(HWND hwnd, const wxString& label);
 // flags for ComputeBestSize() and GetFittingSize()
 enum
 {
-    Size_AuthNeeded = 1
+    Size_AuthNeeded = 1,
+    Size_ExactFit   = 2
 };
 
 // NB: All the functions below are implemented in src/msw/button.cpp
index 2603cdfdf32fa30ad5545baf3d412baf4bb361b6..a2382422e73f27d63fc23e6cccc35ed969586de0 100644 (file)
@@ -387,11 +387,21 @@ wxSize wxMSWButton::GetFittingSize(wxWindow *win,
                                    const wxSize& sizeLabel,
                                    int flags)
 {
-    // FIXME: this is pure guesswork, need to retrieve the real button margins
     wxSize sizeBtn = sizeLabel;
 
-    sizeBtn.x += 3*win->GetCharWidth();
-    sizeBtn.y += win->GetCharHeight()/2;
+    // FIXME: The numbers here are pure guesswork, no idea how should the
+    //        button margins be really calculated.
+    if ( flags & Size_ExactFit )
+    {
+        // We still need some margin or the text would be overwritten, just
+        // make it as small as possible.
+        sizeBtn.x += (3*win->GetCharWidth())/2;
+    }
+    else
+    {
+        sizeBtn.x += 3*win->GetCharWidth();
+        sizeBtn.y += win->GetCharHeight()/2;
+    }
 
     // account for the shield UAC icon if we have it
     if ( flags & Size_AuthNeeded )
@@ -555,6 +565,8 @@ wxSize wxAnyButton::DoGetBestSize() const
     if ( ShowsLabel() )
     {
         int flags = 0;
+        if ( HasFlag(wxBU_EXACTFIT) )
+            flags |= wxMSWButton::Size_ExactFit;
         if ( DoGetAuthNeeded() )
             flags |= wxMSWButton::Size_AuthNeeded;