X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/77ffb5937e89927b621128789401db8921fe580f..bd1a4a99fc1bec4ac5d0b14379dc5345d6ce3253:/src/os2/stattext.cpp diff --git a/src/os2/stattext.cpp b/src/os2/stattext.cpp index c987dafbc0..a344877e2b 100644 --- a/src/os2/stattext.cpp +++ b/src/os2/stattext.cpp @@ -6,13 +6,9 @@ // Created: 10/17/99 // RCS-ID: $Id$ // Copyright: (c) David Webster -// Licence: wxWidgets licence +// 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,22 @@ bool wxStaticText::Create( long lSstyle = 0L; - lSstyle = WS_VISIBLE | SS_TEXT | DT_VCENTER; + // Used to have DT_VCENTER but that doesn't work correctly with + // multiline strings and DT_WORDBREAK. Accept a reasonable + // compromise for now + lSstyle = WS_VISIBLE | SS_TEXT | DT_WORDBREAK | 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 +85,7 @@ bool wxStaticText::Create( wxColour vColour; - vColour.Set(wxString("BLACK")); + vColour.Set(wxString(wxT("BLACK"))); LONG lColor = (LONG)vColour.GetPixel(); @@ -121,7 +123,7 @@ wxSize wxStaticText::DoGetBestSize() const int nHeightLineDefault = 0; int nHeightLine = 0; wxString sCurLine; - bool bLastWasAmpersand = FALSE; + bool bLastWasTilde = FALSE; for (const wxChar *pc = sText; ; pc++) { @@ -163,16 +165,16 @@ wxSize wxStaticText::DoGetBestSize() const else { // - // We shouldn't take into account the '&' which just introduces the + // 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 + // when it is preceded by another '~' in which case it stands for a + // literal tilde // - if (*pc == _T('&')) + if (*pc == _T('~')) { - if (!bLastWasAmpersand) + if (!bLastWasTilde) { - bLastWasAmpersand = TRUE; + bLastWasTilde = TRUE; // // Skip the statement adding pc to curLine below @@ -181,9 +183,9 @@ wxSize wxStaticText::DoGetBestSize() const } // - // It is a literal ampersand + // It is a literal tilde // - bLastWasAmpersand = FALSE; + bLastWasTilde = FALSE; } sCurLine += *pc; } @@ -235,7 +237,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