added support for ellipsization and markup in wxStaticText (modified patch 1629946)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@45199 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2007-04-01 14:13:15 +00:00
parent 9d529fa05c
commit 39bc0347fd
35 changed files with 1387 additions and 280 deletions

View File

@@ -66,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
@@ -103,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;
@@ -205,6 +205,10 @@ void wxStaticText::DoSetSize(
,nHeight
,nSizeFlags
);
// eventually update label (if ellipsizing is on):
UpdateLabel();
Refresh();
} // end of wxStaticText::DoSetSize
@@ -229,14 +233,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 neither ellipsize nor markup in static text:
DoSetLabel(GetEllipsizedLabelWithoutMarkup(label));
//
// 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;
@@ -263,3 +270,19 @@ MRESULT wxStaticText::OS2WindowProc(
,lParam
);
} // end of wxStaticText::OS2WindowProc
// for wxST_ELLIPSIZE_* support:
void wxStaticText::DoSetLabel(const wxString& str)
{
wxString sLabel = ::wxPMTextToLabel(str);
::WinSetWindowText(GetHwnd(), (PSZ)sLabel.c_str());
}
wxString wxStaticText::DoGetLabel() const
{
// FIXME: how to retrieve the text?
//return wxGetWindowText(GetHWND());
}