From c5f975dddbd7ad4d495eadaffaf04cd86a5d3b42 Mon Sep 17 00:00:00 2001 From: Stefan Neis Date: Sun, 27 Nov 2005 21:30:40 +0000 Subject: [PATCH] Applied patch #1198422 (CheckBox labels being truncated). git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@36273 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/os2/checkbox.cpp | 21 ++++----------------- src/os2/radiobox.cpp | 22 +++++++++++++--------- src/os2/radiobut.cpp | 16 +++++----------- src/os2/statbox.cpp | 10 +++------- 4 files changed, 25 insertions(+), 44 deletions(-) diff --git a/src/os2/checkbox.cpp b/src/os2/checkbox.cpp index b83deaa481..3bdc229700 100644 --- a/src/os2/checkbox.cpp +++ b/src/os2/checkbox.cpp @@ -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; diff --git a/src/os2/radiobox.cpp b/src/os2/radiobox.cpp index 0a2a31fde1..b379cd3724 100644 --- a/src/os2/radiobox.cpp +++ b/src/os2/radiobox.cpp @@ -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; diff --git a/src/os2/radiobut.cpp b/src/os2/radiobut.cpp index 61fd55f4b0..7134de72b4 100644 --- a/src/os2/radiobut.cpp +++ b/src/os2/radiobut.cpp @@ -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; } diff --git a/src/os2/statbox.cpp b/src/os2/statbox.cpp index cb5a1b6aa0..ef75d915d0 100644 --- a/src/os2/statbox.cpp +++ b/src/os2/statbox.cpp @@ -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; -- 2.45.2