X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3c299c3ab663257429983c24e6fb71450f3cf9f1..0cc66b6c0b7b50bfba244e4f8e48a9b071e75ae2:/src/os2/stattext.cpp diff --git a/src/os2/stattext.cpp b/src/os2/stattext.cpp index cb8e29c0b3..d5cfd5c9e4 100644 --- a/src/os2/stattext.cpp +++ b/src/os2/stattext.cpp @@ -20,6 +20,7 @@ #include "wx/event.h" #include "wx/app.h" #include "wx/brush.h" +#include "wx/scrolwin.h" #endif #include "wx/stattext.h" @@ -91,9 +92,18 @@ bool wxStaticText::Create( ,sizeof(LONG) ,(PVOID)&lColor ); + lColor = (LONG)m_backgroundColour.GetPixel(); + + ::WinSetPresParam( m_hWnd + ,PP_BACKGROUNDCOLOR + ,sizeof(LONG) + ,(PVOID)&lColor + ); SubclassWin(m_hWnd); - wxControl::SetFont(pParent->GetFont()); + SetFont(*wxSMALL_FONT); + SetXComp(0); + SetYComp(0); SetSize( nX ,nY ,nWidth @@ -111,6 +121,7 @@ wxSize wxStaticText::DoGetBestSize() const int nHeightLineDefault = 0; int nHeightLine = 0; wxString sCurLine; + bool bLastWasAmpersand = FALSE; for (const wxChar *pc = sText; ; pc++) { @@ -151,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; } } @@ -159,6 +193,27 @@ wxSize wxStaticText::DoGetBestSize() const ); } // end of wxStaticText::DoGetBestSize +void wxStaticText::DoSetSize( + int nX +, int nY +, int nWidth +, int nHeight +, int nSizeFlags +) +{ + // + // We need to refresh the window after changing its size as the standard + // control doesn't always update itself properly. + // + wxStaticTextBase::DoSetSize( nX + ,nY + ,nWidth + ,nHeight + ,nSizeFlags + ); + Refresh(); +} // end of wxStaticText::DoSetSize + bool wxStaticText::SetFont( const wxFont& rFont ) @@ -188,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( @@ -204,5 +268,3 @@ MRESULT wxStaticText::OS2WindowProc( ,lParam ); } // end of wxStaticText::OS2WindowProc - -