#include "wx/os2/private.h"
#include <stdio.h>
-IMPLEMENT_DYNAMIC_CLASS(wxStaticText, wxControl)
-
bool wxStaticText::Create( wxWindow* pParent,
wxWindowID vId,
const wxString& rsLabel,
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
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;
if (!nHeightLineDefault)
nHeightLineDefault = nHeightLine;
if (!nHeightLineDefault)
- GetTextExtent(_T("W"), NULL, &nHeightLineDefault);
+ GetTextExtent(wxT("W"), NULL, &nHeightLineDefault);
nHeightTextTotal += nHeightLineDefault;
}
else
// when it is preceded by another '~' in which case it stands for a
// literal tilde
//
- if (*pc == _T('~'))
+ if (*pc == wxT('~'))
{
if (!bLastWasTilde)
{
,nHeight
,nSizeFlags
);
+
+ // eventually update label (if ellipsizing is on):
+ UpdateLabel();
+
Refresh();
} // end of wxStaticText::DoSetSize
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;
,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());
+}
+