X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d5da0ce7cb746318511b3974b7882c72c0de45e2..cb41a69b152026d6c586d21148e34913291cd733:/src/os2/stattext.cpp?ds=sidebyside diff --git a/src/os2/stattext.cpp b/src/os2/stattext.cpp index d8af7b31c7..92c56f7fa9 100644 --- a/src/os2/stattext.cpp +++ b/src/os2/stattext.cpp @@ -4,7 +4,6 @@ // Author: David Webster // Modified by: // Created: 10/17/99 -// RCS-ID: $Id$ // Copyright: (c) David Webster // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// @@ -12,6 +11,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,12 +20,9 @@ #include "wx/scrolwin.h" #endif -#include "wx/stattext.h" #include "wx/os2/private.h" #include -IMPLEMENT_DYNAMIC_CLASS(wxStaticText, wxControl) - bool wxStaticText::Create( wxWindow* pParent, wxWindowID vId, const wxString& rsLabel, @@ -65,11 +63,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 +98,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 +128,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 +159,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 +202,10 @@ void wxStaticText::DoSetSize( ,nHeight ,nSizeFlags ); + + // eventually update label (if ellipsizing is on): + UpdateLabel(); + Refresh(); } // end of wxStaticText::DoSetSize @@ -228,14 +230,17 @@ 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 ellipsized labels in static text: + DoSetLabel(GetEllipsizedLabel()); // // 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 +267,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()); +} +