X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b3260bce473ab247edd8ca1d3aee4eb648b4b97e..7dd40b6f4b31e6bc9c7f626f1461aff8adf7714c:/src/os2/stattext.cpp diff --git a/src/os2/stattext.cpp b/src/os2/stattext.cpp index 56e44dca0e..66e4072997 100644 --- a/src/os2/stattext.cpp +++ b/src/os2/stattext.cpp @@ -9,10 +9,6 @@ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ -#pragma implementation "stattext.h" -#endif - // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" @@ -60,16 +56,19 @@ bool wxStaticText::Create( long lSstyle = 0L; - lSstyle = WS_VISIBLE | SS_TEXT | DT_VCENTER; + lSstyle = WS_VISIBLE | SS_TEXT | DT_VCENTER | DT_MNEMONIC; if (m_windowStyle & wxALIGN_CENTRE) lSstyle |= DT_CENTER; else if (m_windowStyle & wxALIGN_RIGHT) lSstyle |= DT_RIGHT; else lSstyle |= DT_LEFT; + + wxString sLabel = ::wxPMTextToLabel(rsLabel); + m_hWnd = (WXHWND)::WinCreateWindow( (HWND)GetHwndOf(pParent) // Parent window handle ,WC_STATIC // Window class - ,(PSZ)rsLabel.c_str() // Initial Text + ,(PSZ)sLabel.c_str() // Initial Text ,(ULONG)lSstyle // Style flags ,0L, 0L, 0L, 0L // Origin -- 0 size ,(HWND)GetHwndOf(pParent) // owner window handle (same as parent @@ -83,7 +82,7 @@ bool wxStaticText::Create( wxColour vColour; - vColour.Set(wxString("BLACK")); + vColour.Set(wxString(wxT("BLACK"))); LONG lColor = (LONG)vColour.GetPixel(); @@ -101,18 +100,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 +120,7 @@ wxSize wxStaticText::DoGetBestSize() const int nHeightLineDefault = 0; int nHeightLine = 0; wxString sCurLine; + bool bLastWasTilde = FALSE; for (const wxChar *pc = sText; ; pc++) { @@ -165,6 +161,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 tilde + // + if (*pc == _T('~')) + { + if (!bLastWasTilde) + { + bLastWasTilde = TRUE; + + // + // Skip the statement adding pc to curLine below + // + continue; + } + + // + // It is a literal tilde + // + bLastWasTilde = FALSE; + } sCurLine += *pc; } } @@ -215,7 +234,8 @@ void wxStaticText::SetLabel( const wxString& rsLabel ) { - ::WinSetWindowText(GetHwnd(), rsLabel.c_str()); + wxString sLabel = ::wxPMTextToLabel(rsLabel); + ::WinSetWindowText(GetHwnd(), (PSZ)sLabel.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(