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:
@@ -131,5 +131,10 @@ inline wxEventType GtkScrollWinTypeToWx(guint scrollType)
|
|||||||
wxEVT_SCROLLWIN_TOP - wxEVT_SCROLL_TOP;
|
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_
|
#endif // _WX_GTK_PRIVATE_H_
|
||||||
|
|
||||||
|
@@ -131,5 +131,10 @@ inline wxEventType GtkScrollWinTypeToWx(guint scrollType)
|
|||||||
wxEVT_SCROLLWIN_TOP - wxEVT_SCROLL_TOP;
|
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_
|
#endif // _WX_GTK_PRIVATE_H_
|
||||||
|
|
||||||
|
@@ -132,19 +132,20 @@ void wxStaticText::SetLabel( const wxString &label )
|
|||||||
#ifdef __WXGTK20__
|
#ifdef __WXGTK20__
|
||||||
// Build the colorized version of the label (markup only allowed
|
// Build the colorized version of the label (markup only allowed
|
||||||
// under GTK2):
|
// 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 (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>"),
|
colorlabel.Printf(_T("<span foreground=\"#%02x%02x%02x\">%s</span>"),
|
||||||
m_foregroundColour.Red(), m_foregroundColour.Green(),
|
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 ) );
|
||||||
}
|
}
|
||||||
|
else
|
||||||
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
|
#endif
|
||||||
|
|
||||||
// adjust the label size to the new label unless disabled
|
// adjust the label size to the new label unless disabled
|
||||||
|
@@ -81,6 +81,43 @@ bool wxSetDetectableAutoRepeat( bool WXUNUSED(flag) )
|
|||||||
}
|
}
|
||||||
#endif
|
#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
|
// display characterstics
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
@@ -132,19 +132,20 @@ void wxStaticText::SetLabel( const wxString &label )
|
|||||||
#ifdef __WXGTK20__
|
#ifdef __WXGTK20__
|
||||||
// Build the colorized version of the label (markup only allowed
|
// Build the colorized version of the label (markup only allowed
|
||||||
// under GTK2):
|
// 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 (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>"),
|
colorlabel.Printf(_T("<span foreground=\"#%02x%02x%02x\">%s</span>"),
|
||||||
m_foregroundColour.Red(), m_foregroundColour.Green(),
|
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 ) );
|
||||||
}
|
}
|
||||||
|
else
|
||||||
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
|
#endif
|
||||||
|
|
||||||
// adjust the label size to the new label unless disabled
|
// adjust the label size to the new label unless disabled
|
||||||
|
@@ -81,6 +81,43 @@ bool wxSetDetectableAutoRepeat( bool WXUNUSED(flag) )
|
|||||||
}
|
}
|
||||||
#endif
|
#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
|
// display characterstics
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
Reference in New Issue
Block a user