// wxButton
//-----------------------------------------------------------------------------
-IMPLEMENT_DYNAMIC_CLASS(wxButton,wxControl)
-
bool wxButton::Create(wxWindow *parent,
wxWindowID id,
const wxString &label,
GTKApplyWidgetStyle( false );
}
-bool wxButton::Enable( bool enable )
+#if wxUSE_MARKUP
+bool wxButton::DoSetLabelMarkup(const wxString& markup)
{
- bool isEnabled = IsEnabled();
+ wxCHECK_MSG( m_widget != NULL, false, "invalid button" );
- if ( !wxControl::Enable( enable ) )
+ 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;
+}
+#endif // wxUSE_MARKUP
+
+bool wxButton::Enable( bool enable )
+{
+ if (!base_type::Enable(enable))
return false;
gtk_widget_set_sensitive(GTK_BIN(m_widget)->child, enable);
- if (!isEnabled && enable)
- {
+ if (enable)
GTKFixSensitivity();
- }
GTKUpdateBitmap();
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);
}
gtk_button_set_image_position(GTK_BUTTON(m_widget), gtkpos);
+ InvalidateBestSize();
}
#endif // GTK+ 2.10+
}