X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d5da0ce7cb746318511b3974b7882c72c0de45e2..5575dacc5004176c5d617788bdffc5fc10b27436:/src/os2/stattext.cpp?ds=inline diff --git a/src/os2/stattext.cpp b/src/os2/stattext.cpp index d8af7b31c7..6285c011da 100644 --- a/src/os2/stattext.cpp +++ b/src/os2/stattext.cpp @@ -12,6 +12,8 @@ // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" +#include "wx/stattext.h" + #ifndef WX_PRECOMP #include "wx/event.h" #include "wx/app.h" @@ -19,7 +21,6 @@ #include "wx/scrolwin.h" #endif -#include "wx/stattext.h" #include "wx/os2/private.h" #include @@ -65,11 +66,9 @@ bool wxStaticText::Create( wxWindow* pParent, else lSstyle |= DT_LEFT; - wxString sLabel = ::wxPMTextToLabel(rsLabel); - m_hWnd = (WXHWND)::WinCreateWindow( (HWND)GetHwndOf(pParent) // Parent window handle ,WC_STATIC // Window class - ,(PSZ)sLabel.c_str() // Initial Text + ,NULL // Initial Text ,(ULONG)lSstyle // Style flags ,0L, 0L, 0L, 0L // Origin -- 0 size ,(HWND)GetHwndOf(pParent) // owner window handle (same as parent @@ -102,12 +101,14 @@ bool wxStaticText::Create( wxWindow* pParent, SetYComp(0); SetSize( nX, nY, nWidth, nHeight ); + SetLabel(rsLabel); + return true; } // end of wxStaticText::Create wxSize wxStaticText::DoGetBestSize() const { - wxString sText(wxGetWindowText(GetHWND())); + wxString sText(GetLabel()); int nWidthTextMax = 0; int nWidthLine = 0; int nHeightTextTotal = 0; @@ -130,7 +131,7 @@ wxSize wxStaticText::DoGetBestSize() const if (!nHeightLineDefault) nHeightLineDefault = nHeightLine; if (!nHeightLineDefault) - GetTextExtent(_T("W"), NULL, &nHeightLineDefault); + GetTextExtent(wxT("W"), NULL, &nHeightLineDefault); nHeightTextTotal += nHeightLineDefault; } else @@ -161,7 +162,7 @@ wxSize wxStaticText::DoGetBestSize() const // when it is preceded by another '~' in which case it stands for a // literal tilde // - if (*pc == _T('~')) + if (*pc == wxT('~')) { if (!bLastWasTilde) { @@ -204,6 +205,10 @@ void wxStaticText::DoSetSize( ,nHeight ,nSizeFlags ); + + // eventually update label (if ellipsizing is on): + UpdateLabel(); + Refresh(); } // end of wxStaticText::DoSetSize @@ -228,14 +233,18 @@ void wxStaticText::SetLabel( const wxString& rsLabel ) { - wxString sLabel = ::wxPMTextToLabel(rsLabel); - ::WinSetWindowText(GetHwnd(), (PSZ)sLabel.c_str()); + m_labelOrig = rsLabel; // save original label + + // OS/2 does not support neither ellipsize nor markup in static text: + DoSetLabel(rsLabel); + DoSetLabel(GetEllipsizedLabelWithoutMarkup()); // // Adjust the size of the window to fit to the label unless autoresizing is // disabled // - if (!(GetWindowStyle() & wxST_NO_AUTORESIZE)) + if (!(GetWindowStyle() & wxST_NO_AUTORESIZE) && + !IsEllipsized()) { wxCoord vX; wxCoord vY; @@ -262,3 +271,18 @@ MRESULT wxStaticText::OS2WindowProc( ,lParam ); } // end of wxStaticText::OS2WindowProc + + +// for wxST_ELLIPSIZE_* support: + +void wxStaticText::DoSetLabel(const wxString& str) +{ + wxString sLabel = ::wxPMTextToLabel(str); + ::WinSetWindowText(GetHwnd(), sLabel.c_str()); +} + +wxString wxStaticText::DoGetLabel() const +{ + return wxGetWindowText(GetHwnd()); +} +