Corrected button height for multiline buttons.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@31902 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -41,6 +41,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "wx/stockitem.h"
|
#include "wx/stockitem.h"
|
||||||
|
#include "wx/tokenzr.h"
|
||||||
#include "wx/msw/private.h"
|
#include "wx/msw/private.h"
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@@ -204,18 +205,39 @@ WXDWORD wxButton::MSWGetStyle(long style, WXDWORD *exstyle) const
|
|||||||
|
|
||||||
wxSize wxButton::DoGetBestSize() const
|
wxSize wxButton::DoGetBestSize() const
|
||||||
{
|
{
|
||||||
int wBtn;
|
int wBtn = 0;
|
||||||
GetTextExtent(wxGetWindowText(GetHWND()), &wBtn, NULL);
|
int wChar, hChar, hBtn;
|
||||||
|
|
||||||
int wChar, hChar;
|
|
||||||
wxGetCharSize(GetHWND(), &wChar, &hChar, GetFont());
|
wxGetCharSize(GetHWND(), &wChar, &hChar, GetFont());
|
||||||
|
|
||||||
|
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);
|
||||||
|
|
||||||
|
// 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
|
// add a margin -- the button is wider than just its label
|
||||||
wBtn += 3*wChar;
|
wBtn += 3*wChar;
|
||||||
|
|
||||||
// the button height is proportional to the height of the font used
|
|
||||||
int hBtn = BUTTON_HEIGHT_FROM_CHAR_HEIGHT(hChar);
|
|
||||||
|
|
||||||
// all buttons have at least the standard size unless the user explicitly
|
// 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
|
// wants them to be of smaller size and used wxBU_EXACTFIT style when
|
||||||
// creating the button
|
// creating the button
|
||||||
|
Reference in New Issue
Block a user