Implement support for markup labels for wxGTK wxButton.

Simply directly set the markup for the GtkLabel used by GtkButton internally.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67066 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2011-02-27 12:48:30 +00:00
parent 95912bddde
commit de1cc37868
2 changed files with 45 additions and 0 deletions

View File

@@ -262,6 +262,24 @@ void wxButton::SetLabel( const wxString &lbl )
GTKApplyWidgetStyle( false );
}
bool wxButton::DoSetLabelMarkup(const wxString& markup)
{
wxCHECK_MSG( m_widget != NULL, false, "invalid button" );
const wxString stripped = RemoveMarkup(markup);
if ( stripped.empty() && !markup.empty() )
return false;
wxControl::SetLabel(stripped);
GtkLabel * const label = GTKGetLabel();
wxCHECK_MSG( label, false, "no label in this button?" );
GTKSetLabelWithMarkupForLabel(label, markup);
return true;
}
bool wxButton::Enable( bool enable )
{
if (!base_type::Enable(enable))
@@ -282,6 +300,25 @@ GdkWindow *wxButton::GTKGetWindow(wxArrayGdkWindows& WXUNUSED(windows)) const
return GTK_BUTTON(m_widget)->event_window;
}
GtkLabel *wxButton::GTKGetLabel() const
{
GtkWidget *child = GTK_BIN(m_widget)->child;
if ( GTK_IS_ALIGNMENT(child) )
{
GtkWidget *box = GTK_BIN(child)->child;
for (GList* item = GTK_BOX(box)->children; item; item = item->next)
{
GtkBoxChild* boxChild = static_cast<GtkBoxChild*>(item->data);
if ( GTK_IS_LABEL(boxChild->widget) )
return GTK_LABEL(boxChild->widget);
}
return NULL;
}
return GTK_LABEL(child);
}
void wxButton::DoApplyWidgetStyle(GtkRcStyle *style)
{
gtk_widget_modify_style(m_widget, style);