X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b3260bce473ab247edd8ca1d3aee4eb648b4b97e..2830b4a411593860aa75ae22478d09db14c789cf:/src/os2/stattext.cpp diff --git a/src/os2/stattext.cpp b/src/os2/stattext.cpp index 56e44dca0e..4febe1ee27 100644 --- a/src/os2/stattext.cpp +++ b/src/os2/stattext.cpp @@ -83,7 +83,7 @@ bool wxStaticText::Create( wxColour vColour; - vColour.Set(wxString("BLACK")); + vColour.Set(wxString(wxT("BLACK"))); LONG lColor = (LONG)vColour.GetPixel(); @@ -101,18 +101,14 @@ bool wxStaticText::Create( ); SubclassWin(m_hWnd); - wxFont* pTextFont = new wxFont( 10 - ,wxMODERN - ,wxNORMAL - ,wxNORMAL - ); - wxControl::SetFont(*pTextFont); + SetFont(*wxSMALL_FONT); + SetXComp(0); + SetYComp(0); SetSize( nX ,nY ,nWidth ,nHeight ); - delete pTextFont; return TRUE; } // end of wxStaticText::Create @@ -125,6 +121,7 @@ wxSize wxStaticText::DoGetBestSize() const int nHeightLineDefault = 0; int nHeightLine = 0; wxString sCurLine; + bool bLastWasAmpersand = FALSE; for (const wxChar *pc = sText; ; pc++) { @@ -165,6 +162,29 @@ wxSize wxStaticText::DoGetBestSize() const } else { + // + // We shouldn't take into account the '&' which just introduces the + // mnemonic characters and so are not shown on the screen -- except + // when it is preceded by another '&' in which case it stands for a + // literal ampersand + // + if (*pc == _T('&')) + { + if (!bLastWasAmpersand) + { + bLastWasAmpersand = TRUE; + + // + // Skip the statement adding pc to curLine below + // + continue; + } + + // + // It is a literal ampersand + // + bLastWasAmpersand = FALSE; + } sCurLine += *pc; } } @@ -215,7 +235,7 @@ void wxStaticText::SetLabel( const wxString& rsLabel ) { - ::WinSetWindowText(GetHwnd(), rsLabel.c_str()); + ::WinSetWindowText(GetHwnd(), (PSZ)rsLabel.c_str()); // // Adjust the size of the window to fit to the label unless autoresizing is @@ -223,9 +243,18 @@ void wxStaticText::SetLabel( // if (!(GetWindowStyle() & wxST_NO_AUTORESIZE)) { - DoSetSize(-1, -1, -1, -1, wxSIZE_AUTO_WIDTH | wxSIZE_AUTO_HEIGHT); + wxCoord vX; + wxCoord vY; + wxCoord vWidth; + wxCoord vHeight; + + GetPosition(&vX, &vY); + GetSize(&vWidth, &vHeight); + if (!(vX == -1 && vY == -1 && vWidth == -1 && vHeight == -1)) + DoSetSize(vX, vY, vWidth, vHeight, wxSIZE_AUTO_WIDTH | wxSIZE_AUTO_HEIGHT); + else + DoSetSize(-1, -1, -1, -1, wxSIZE_AUTO_WIDTH | wxSIZE_AUTO_HEIGHT); } - DoSetSize(-1, -1, -1, -1, wxSIZE_AUTO_WIDTH | wxSIZE_AUTO_HEIGHT); } // end of wxStaticText::SetLabel MRESULT wxStaticText::OS2WindowProc(