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:
@@ -108,22 +108,9 @@ void wxCheckBox::SetLabel(
|
||||
|
||||
wxSize wxCheckBox::DoGetBestSize() const
|
||||
{
|
||||
static int nCheckSize = 0;
|
||||
|
||||
if (!nCheckSize)
|
||||
{
|
||||
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();
|
||||
}
|
||||
|
||||
// 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.
|
||||
int nCheckSize = RADIO_SIZE;
|
||||
int nWidthCheckbox;
|
||||
int nHeightCheckbox;
|
||||
wxString sStr = wxGetWindowText(GetHWND());
|
||||
@@ -134,7 +121,7 @@ wxSize wxCheckBox::DoGetBestSize() const
|
||||
,&nWidthCheckbox
|
||||
,&nHeightCheckbox
|
||||
);
|
||||
nWidthCheckbox += nCheckSize + GetCharWidth();
|
||||
nWidthCheckbox += nCheckSize;
|
||||
|
||||
if (nHeightCheckbox < nCheckSize)
|
||||
nHeightCheckbox = nCheckSize;
|
||||
|
@@ -337,7 +337,7 @@ bool wxRadioBox::Create(
|
||||
|
||||
HWND hWndBtn = (WXHWND)::WinCreateWindow ( GetHwndOf(pParent)
|
||||
,WC_BUTTON
|
||||
,(PSZ)asChoices[i].c_str()
|
||||
,::wxPMTextToLabel(asChoices[i])
|
||||
,lStyleBtn
|
||||
,0, 0, 0, 0
|
||||
,GetWinHwnd(pParent)
|
||||
@@ -873,23 +873,27 @@ wxSize wxRadioBox::GetTotalButtonSize( const wxSize& rSizeBtn ) const
|
||||
{
|
||||
int nCx1;
|
||||
int nCy1;
|
||||
int nExtraHeight;
|
||||
int nHeight;
|
||||
int nWidth;
|
||||
int nWidthLabel;
|
||||
wxFont vFont = GetFont();
|
||||
|
||||
wxGetCharSize( m_hWnd, &nCx1, &nCy1, &vFont );
|
||||
nExtraHeight = nCy1;
|
||||
int nWidthLabel = 0;
|
||||
|
||||
nCx1 = GetCharWidth();
|
||||
nCy1 = GetCharHeight();
|
||||
nHeight = GetNumVer() * rSizeBtn.y + (2 * nCy1);
|
||||
nWidth = GetNumHor() * (rSizeBtn.x + nCx1) + nCx1;
|
||||
|
||||
//
|
||||
// And also wide enough for its label
|
||||
//
|
||||
GetTextExtent( GetLabel(), &nWidthLabel, NULL );
|
||||
nWidthLabel += RADIO_SIZE;
|
||||
wxString sStr = wxGetWindowText(GetHwnd());
|
||||
if (!sStr.IsEmpty())
|
||||
{
|
||||
GetTextExtent( sStr
|
||||
,&nWidthLabel
|
||||
,NULL
|
||||
);
|
||||
nWidthLabel += 2*nCx1;
|
||||
}
|
||||
if (nWidthLabel > nWidth)
|
||||
nWidth = nWidthLabel;
|
||||
|
||||
|
@@ -111,17 +111,11 @@ bool wxRadioButton::Create(
|
||||
|
||||
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)
|
||||
{
|
||||
wxScreenDC vDC;
|
||||
|
||||
vDC.SetFont(wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT));
|
||||
snRadioSize = vDC.GetCharHeight();
|
||||
}
|
||||
|
||||
wxString sStr = GetLabel();
|
||||
wxString sStr = wxGetWindowText(GetHwnd());
|
||||
int nRadioWidth;
|
||||
int nRadioHeight;
|
||||
|
||||
@@ -131,7 +125,7 @@ wxSize wxRadioButton::DoGetBestSize() const
|
||||
,&nRadioWidth
|
||||
,&nRadioHeight
|
||||
);
|
||||
nRadioWidth += snRadioSize + GetCharWidth();
|
||||
nRadioWidth += snRadioSize;
|
||||
if (nRadioHeight < snRadioSize)
|
||||
nRadioHeight = snRadioSize;
|
||||
}
|
||||
|
@@ -96,16 +96,12 @@ wxSize wxStaticBox::DoGetBestSize() const
|
||||
int nCx;
|
||||
int nCy;
|
||||
int wBox;
|
||||
wxFont vFont = GetFont();
|
||||
|
||||
wxGetCharSize( GetHWND()
|
||||
,&nCx
|
||||
,&nCy
|
||||
,&vFont
|
||||
);
|
||||
nCx = GetCharWidth();
|
||||
nCy = GetCharHeight();
|
||||
GetTextExtent( wxGetWindowText(m_hWnd)
|
||||
,&wBox
|
||||
,&nCy
|
||||
,NULL
|
||||
);
|
||||
wBox += 3 * nCx;
|
||||
|
||||
|
Reference in New Issue
Block a user