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:
@@ -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());
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user