fixed setting colour of wxStaticText in case the label contains XML special characters
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@28041 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
1dbeee5774
commit
66bd83b4ec
@ -131,5 +131,10 @@ inline wxEventType GtkScrollWinTypeToWx(guint scrollType)
|
||||
wxEVT_SCROLLWIN_TOP - wxEVT_SCROLL_TOP;
|
||||
}
|
||||
|
||||
#ifdef __WXGTK20__
|
||||
// Escapes string so that it is valid Pango markup XML string:
|
||||
wxString wxEscapeStringForPangoMarkup(const wxString& str);
|
||||
#endif
|
||||
|
||||
#endif // _WX_GTK_PRIVATE_H_
|
||||
|
||||
|
@ -131,5 +131,10 @@ inline wxEventType GtkScrollWinTypeToWx(guint scrollType)
|
||||
wxEVT_SCROLLWIN_TOP - wxEVT_SCROLL_TOP;
|
||||
}
|
||||
|
||||
#ifdef __WXGTK20__
|
||||
// Escapes string so that it is valid Pango markup XML string:
|
||||
wxString wxEscapeStringForPangoMarkup(const wxString& str);
|
||||
#endif
|
||||
|
||||
#endif // _WX_GTK_PRIVATE_H_
|
||||
|
||||
|
@ -132,19 +132,20 @@ void wxStaticText::SetLabel( const wxString &label )
|
||||
#ifdef __WXGTK20__
|
||||
// Build the colorized version of the label (markup only allowed
|
||||
// under GTK2):
|
||||
wxString colorlabel = label;
|
||||
// If the color has been set, create a markup string to pass to
|
||||
// the label setter
|
||||
if (m_foregroundColour.Ok())
|
||||
{
|
||||
// If the color has been set, create a markup string to pass to
|
||||
// the label setter
|
||||
wxString colorlabel;
|
||||
colorlabel.Printf(_T("<span foreground=\"#%02x%02x%02x\">%s</span>"),
|
||||
m_foregroundColour.Red(), m_foregroundColour.Green(),
|
||||
m_foregroundColour.Blue(), label.c_str());
|
||||
m_foregroundColour.Blue(),
|
||||
wxEscapeStringForPangoMarkup(label).c_str());
|
||||
gtk_label_set_markup( GTK_LABEL(m_widget), wxGTK_CONV( colorlabel ) );
|
||||
}
|
||||
|
||||
gtk_label_set_markup( GTK_LABEL(m_widget), wxGTK_CONV( colorlabel ) );
|
||||
else
|
||||
#else
|
||||
gtk_label_set( GTK_LABEL(m_widget), wxGTK_CONV( m_label ) );
|
||||
gtk_label_set( GTK_LABEL(m_widget), wxGTK_CONV( m_label ) );
|
||||
#endif
|
||||
|
||||
// adjust the label size to the new label unless disabled
|
||||
|
@ -81,6 +81,43 @@ bool wxSetDetectableAutoRepeat( bool WXUNUSED(flag) )
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef __WXGTK20__
|
||||
// Escapes string so that it is valid Pango markup XML string:
|
||||
wxString wxEscapeStringForPangoMarkup(const wxString& str)
|
||||
{
|
||||
size_t len = str.length();
|
||||
wxString out;
|
||||
out.Alloc(len);
|
||||
for (size_t i = 0; i < len; i++)
|
||||
{
|
||||
wxChar c = str[i];
|
||||
switch (c)
|
||||
{
|
||||
case _T('&'):
|
||||
out << _T("&");
|
||||
break;
|
||||
case _T('<'):
|
||||
out << _T("<");
|
||||
break;
|
||||
case _T('>'):
|
||||
out << _T(">");
|
||||
break;
|
||||
case _T('\''):
|
||||
out << _T("'");
|
||||
break;
|
||||
case _T('"'):
|
||||
out << _T(""");
|
||||
break;
|
||||
default:
|
||||
out << c;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return out;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// display characterstics
|
||||
// ----------------------------------------------------------------------------
|
||||
|
@ -132,19 +132,20 @@ void wxStaticText::SetLabel( const wxString &label )
|
||||
#ifdef __WXGTK20__
|
||||
// Build the colorized version of the label (markup only allowed
|
||||
// under GTK2):
|
||||
wxString colorlabel = label;
|
||||
// If the color has been set, create a markup string to pass to
|
||||
// the label setter
|
||||
if (m_foregroundColour.Ok())
|
||||
{
|
||||
// If the color has been set, create a markup string to pass to
|
||||
// the label setter
|
||||
wxString colorlabel;
|
||||
colorlabel.Printf(_T("<span foreground=\"#%02x%02x%02x\">%s</span>"),
|
||||
m_foregroundColour.Red(), m_foregroundColour.Green(),
|
||||
m_foregroundColour.Blue(), label.c_str());
|
||||
m_foregroundColour.Blue(),
|
||||
wxEscapeStringForPangoMarkup(label).c_str());
|
||||
gtk_label_set_markup( GTK_LABEL(m_widget), wxGTK_CONV( colorlabel ) );
|
||||
}
|
||||
|
||||
gtk_label_set_markup( GTK_LABEL(m_widget), wxGTK_CONV( colorlabel ) );
|
||||
else
|
||||
#else
|
||||
gtk_label_set( GTK_LABEL(m_widget), wxGTK_CONV( m_label ) );
|
||||
gtk_label_set( GTK_LABEL(m_widget), wxGTK_CONV( m_label ) );
|
||||
#endif
|
||||
|
||||
// adjust the label size to the new label unless disabled
|
||||
|
@ -81,6 +81,43 @@ bool wxSetDetectableAutoRepeat( bool WXUNUSED(flag) )
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef __WXGTK20__
|
||||
// Escapes string so that it is valid Pango markup XML string:
|
||||
wxString wxEscapeStringForPangoMarkup(const wxString& str)
|
||||
{
|
||||
size_t len = str.length();
|
||||
wxString out;
|
||||
out.Alloc(len);
|
||||
for (size_t i = 0; i < len; i++)
|
||||
{
|
||||
wxChar c = str[i];
|
||||
switch (c)
|
||||
{
|
||||
case _T('&'):
|
||||
out << _T("&");
|
||||
break;
|
||||
case _T('<'):
|
||||
out << _T("<");
|
||||
break;
|
||||
case _T('>'):
|
||||
out << _T(">");
|
||||
break;
|
||||
case _T('\''):
|
||||
out << _T("'");
|
||||
break;
|
||||
case _T('"'):
|
||||
out << _T(""");
|
||||
break;
|
||||
default:
|
||||
out << c;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return out;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// display characterstics
|
||||
// ----------------------------------------------------------------------------
|
||||
|
Loading…
Reference in New Issue
Block a user