From: Vadim Zeitlin Date: Tue, 15 Feb 2005 00:37:12 +0000 (+0000) Subject: use wxDC::GetMultiLineTextExtent() instead of duplicating its code in wxButton::DoGet... X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/c4e2838090992384911a6a6aa44cac985d79a555 use wxDC::GetMultiLineTextExtent() instead of duplicating its code in wxButton::DoGetBestSize() git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@32051 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/msw/button.cpp b/src/msw/button.cpp index 0c07934f05..cdad2d28da 100644 --- a/src/msw/button.cpp +++ b/src/msw/button.cpp @@ -216,38 +216,16 @@ WXDWORD wxButton::MSWGetStyle(long style, WXDWORD *exstyle) const wxSize wxButton::DoGetBestSize() const { - int wBtn = 0; - int wChar, hChar, hBtn; - wxGetCharSize(GetHWND(), &wChar, &hChar, GetFont()); + wxClientDC dc(wx_const_cast(wxButton *, this)); + dc.SetFont(wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT)); - wxString label = wxGetWindowText(GetHWND()); - if ( label.find(_T('\n')) != wxString::npos ) - { - wxStringTokenizer tokens( label, wxT("\n") ); - - // the button height is proportional to the height of the font used - hBtn = BUTTON_HEIGHT_FROM_CHAR_HEIGHT(hChar); - hBtn += hChar*(tokens.CountTokens()-1); - - while (tokens.HasMoreTokens()) - { - wxString sub = tokens.GetNextToken(); - int w; - GetTextExtent( sub, &w, NULL); - if (w > wBtn) - wBtn = w; - } - } - else - { - GetTextExtent( label, &wBtn, NULL); + wxCoord wBtn, + hBtn; + dc.GetMultiLineTextExtent(GetLabel(), &wBtn, &hBtn); - // the button height is proportional to the height of the font used - hBtn = BUTTON_HEIGHT_FROM_CHAR_HEIGHT(hChar); - } - // add a margin -- the button is wider than just its label - wBtn += 3*wChar; + wBtn += 3*GetCharWidth(); + hBtn = BUTTON_HEIGHT_FROM_CHAR_HEIGHT(hBtn); // all buttons have at least the standard size unless the user explicitly // wants them to be of smaller size and used wxBU_EXACTFIT style when