Applied patch #1198422 (CheckBox labels being truncated).

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@36273 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Stefan Neis
2005-11-27 21:30:40 +00:00
parent 9630cac5fc
commit c5f975dddb
4 changed files with 25 additions and 44 deletions

View File

@@ -108,22 +108,9 @@ void wxCheckBox::SetLabel(
wxSize wxCheckBox::DoGetBestSize() const wxSize wxCheckBox::DoGetBestSize() const
{ {
static int nCheckSize = 0; // We should probably compute nCheckSize but it seems to be a constant
// independent of its label's font size and not made available by OS/2.
if (!nCheckSize) int nCheckSize = RADIO_SIZE;
{
wxScreenDC vDc;
vDc.SetFont(wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT));
//
// The height of a standard button in the dialog units is 8,
// translate this to pixels (as one dialog unit is precisely equal to
// 8 character heights, it's just the char height)
//
nCheckSize = vDc.GetCharHeight();
}
int nWidthCheckbox; int nWidthCheckbox;
int nHeightCheckbox; int nHeightCheckbox;
wxString sStr = wxGetWindowText(GetHWND()); wxString sStr = wxGetWindowText(GetHWND());
@@ -134,7 +121,7 @@ wxSize wxCheckBox::DoGetBestSize() const
,&nWidthCheckbox ,&nWidthCheckbox
,&nHeightCheckbox ,&nHeightCheckbox
); );
nWidthCheckbox += nCheckSize + GetCharWidth(); nWidthCheckbox += nCheckSize;
if (nHeightCheckbox < nCheckSize) if (nHeightCheckbox < nCheckSize)
nHeightCheckbox = nCheckSize; nHeightCheckbox = nCheckSize;

View File

@@ -337,7 +337,7 @@ bool wxRadioBox::Create(
HWND hWndBtn = (WXHWND)::WinCreateWindow ( GetHwndOf(pParent) HWND hWndBtn = (WXHWND)::WinCreateWindow ( GetHwndOf(pParent)
,WC_BUTTON ,WC_BUTTON
,(PSZ)asChoices[i].c_str() ,::wxPMTextToLabel(asChoices[i])
,lStyleBtn ,lStyleBtn
,0, 0, 0, 0 ,0, 0, 0, 0
,GetWinHwnd(pParent) ,GetWinHwnd(pParent)
@@ -873,23 +873,27 @@ wxSize wxRadioBox::GetTotalButtonSize( const wxSize& rSizeBtn ) const
{ {
int nCx1; int nCx1;
int nCy1; int nCy1;
int nExtraHeight;
int nHeight; int nHeight;
int nWidth; int nWidth;
int nWidthLabel; int nWidthLabel = 0;
wxFont vFont = GetFont();
wxGetCharSize( m_hWnd, &nCx1, &nCy1, &vFont );
nExtraHeight = nCy1;
nCx1 = GetCharWidth();
nCy1 = GetCharHeight();
nHeight = GetNumVer() * rSizeBtn.y + (2 * nCy1); nHeight = GetNumVer() * rSizeBtn.y + (2 * nCy1);
nWidth = GetNumHor() * (rSizeBtn.x + nCx1) + nCx1; nWidth = GetNumHor() * (rSizeBtn.x + nCx1) + nCx1;
// //
// And also wide enough for its label // And also wide enough for its label
// //
GetTextExtent( GetLabel(), &nWidthLabel, NULL ); wxString sStr = wxGetWindowText(GetHwnd());
nWidthLabel += RADIO_SIZE; if (!sStr.IsEmpty())
{
GetTextExtent( sStr
,&nWidthLabel
,NULL
);
nWidthLabel += 2*nCx1;
}
if (nWidthLabel > nWidth) if (nWidthLabel > nWidth)
nWidth = nWidthLabel; nWidth = nWidthLabel;

View File

@@ -111,17 +111,11 @@ bool wxRadioButton::Create(
wxSize wxRadioButton::DoGetBestSize() const wxSize wxRadioButton::DoGetBestSize() const
{ {
static int snRadioSize = 0; // We should probably compute snRadioSize but it seems to be a constant
// independent of its label's font size and not made available by OS/2.
static int snRadioSize = RADIO_SIZE;
if (!snRadioSize) wxString sStr = wxGetWindowText(GetHwnd());
{
wxScreenDC vDC;
vDC.SetFont(wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT));
snRadioSize = vDC.GetCharHeight();
}
wxString sStr = GetLabel();
int nRadioWidth; int nRadioWidth;
int nRadioHeight; int nRadioHeight;
@@ -131,7 +125,7 @@ wxSize wxRadioButton::DoGetBestSize() const
,&nRadioWidth ,&nRadioWidth
,&nRadioHeight ,&nRadioHeight
); );
nRadioWidth += snRadioSize + GetCharWidth(); nRadioWidth += snRadioSize;
if (nRadioHeight < snRadioSize) if (nRadioHeight < snRadioSize)
nRadioHeight = snRadioSize; nRadioHeight = snRadioSize;
} }

View File

@@ -96,16 +96,12 @@ wxSize wxStaticBox::DoGetBestSize() const
int nCx; int nCx;
int nCy; int nCy;
int wBox; int wBox;
wxFont vFont = GetFont();
wxGetCharSize( GetHWND() nCx = GetCharWidth();
,&nCx nCy = GetCharHeight();
,&nCy
,&vFont
);
GetTextExtent( wxGetWindowText(m_hWnd) GetTextExtent( wxGetWindowText(m_hWnd)
,&wBox ,&wBox
,&nCy ,NULL
); );
wBox += 3 * nCx; wBox += 3 * nCx;