Replace wxST_MARKUP style with wxControl::SetLabelMarkup().
This is an incompatible change which removes the wxStaticText-specific wxST_MARKUP style and adds wxControl::SetLabelMarkup() replacing it. It doesn't actually change anything yet but it simplifies wxStaticText code a lot by getting rid of many markup-related functions in it which had to behave differently depending on whether wxST_MARKUP was used or not and also paves way for adding markup support for the other controls in the future. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67055 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -101,32 +101,24 @@ bool wxStaticText::Create(wxWindow *parent,
|
||||
return true;
|
||||
}
|
||||
|
||||
void wxStaticText::SetLabel( const wxString& str )
|
||||
void wxStaticText::GTKDoSetLabel(GTKLabelSetter setter, const wxString& label)
|
||||
{
|
||||
wxCHECK_RET( m_widget != NULL, wxT("invalid static text") );
|
||||
|
||||
// save the label inside m_labelOrig in case user calls GetLabel() later
|
||||
m_labelOrig = str;
|
||||
|
||||
InvalidateBestSize();
|
||||
|
||||
wxString label(str);
|
||||
if (gtk_check_version(2,6,0) &&
|
||||
IsEllipsized())
|
||||
if (gtk_check_version(2,6,0) && IsEllipsized())
|
||||
{
|
||||
// GTK+ < 2.6 does not support ellipsization:
|
||||
// since we need to use our generic code for ellipsization (which does not
|
||||
// behaves well in conjunction with markup; i.e. it may break the markup
|
||||
// validity erasing portions of the string), we also need to strip out
|
||||
// the markup (if present) from the label.
|
||||
|
||||
label = GetEllipsizedLabelWithoutMarkup();
|
||||
// GTK+ < 2.6 does not support ellipsization so we need to do it
|
||||
// manually and as our ellipsization code doesn't deal with markup, we
|
||||
// have no choice but to ignore it in this case and always use plain
|
||||
// text.
|
||||
GTKSetLabelForLabel(GTK_LABEL(m_widget), GetEllipsizedLabel());
|
||||
}
|
||||
else // Ellipsization not needed or supported by GTK+.
|
||||
{
|
||||
(this->*setter)(GTK_LABEL(m_widget), label);
|
||||
}
|
||||
|
||||
if ( HasFlag(wxST_MARKUP) )
|
||||
GTKSetLabelWithMarkupForLabel(GTK_LABEL(m_widget), label);
|
||||
else
|
||||
GTKSetLabelForLabel(GTK_LABEL(m_widget), label);
|
||||
|
||||
// adjust the label size to the new label unless disabled
|
||||
if ( !HasFlag(wxST_NO_AUTORESIZE) &&
|
||||
@@ -134,6 +126,26 @@ void wxStaticText::SetLabel( const wxString& str )
|
||||
SetSize( GetBestSize() );
|
||||
}
|
||||
|
||||
void wxStaticText::SetLabel(const wxString& label)
|
||||
{
|
||||
m_labelOrig = label;
|
||||
|
||||
GTKDoSetLabel(&wxStaticText::GTKSetLabelForLabel, label);
|
||||
}
|
||||
|
||||
bool wxStaticText::DoSetLabelMarkup(const wxString& markup)
|
||||
{
|
||||
const wxString stripped = RemoveMarkup(markup);
|
||||
if ( stripped.empty() && !markup.empty() )
|
||||
return false;
|
||||
|
||||
m_labelOrig = stripped;
|
||||
|
||||
GTKDoSetLabel(&wxStaticText::GTKSetLabelWithMarkupForLabel, markup);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool wxStaticText::SetFont( const wxFont &font )
|
||||
{
|
||||
const bool wasUnderlined = GetFont().GetUnderlined();
|
||||
@@ -228,11 +240,7 @@ wxString wxStaticText::DoGetLabel() const
|
||||
|
||||
void wxStaticText::DoSetLabel(const wxString& str)
|
||||
{
|
||||
// this function looks like GTKSetLabelForLabel() but here we just want to modify
|
||||
// the GTK control without altering any internal wxStaticText variable
|
||||
|
||||
const wxString labelGTK = GTKConvertMnemonics(str);
|
||||
gtk_label_set_text_with_mnemonic(GTK_LABEL(m_widget), wxGTK_CONV(labelGTK));
|
||||
GTKSetLabelForLabel(GTK_LABEL(m_widget), str);
|
||||
}
|
||||
|
||||
// static
|
||||
|
Reference in New Issue
Block a user