wxCommandEvent event(wxEVT_COMMAND_BUTTON_CLICKED, button->GetId());
event.SetEventObject(button);
- button->GetEventHandler()->ProcessEvent(event);
+ button->HandleWindowEvent(event);
}
}
else if (HasFlag(wxBU_BOTTOM))
y_alignment = 1.0;
-#ifdef __WXGTK24__
- if (!gtk_check_version(2,4,0))
- {
- gtk_button_set_alignment(GTK_BUTTON(m_widget), x_alignment, y_alignment);
- }
- else
-#endif
- {
- if (GTK_IS_MISC(GTK_BIN(m_widget)->child))
- gtk_misc_set_alignment(GTK_MISC(GTK_BIN(m_widget)->child),
- x_alignment, y_alignment);
- }
+ gtk_button_set_alignment(GTK_BUTTON(m_widget), x_alignment, y_alignment);
SetLabel(label);
void wxButton::DoApplyWidgetStyle(GtkRcStyle *style)
{
gtk_widget_modify_style(m_widget, style);
- gtk_widget_modify_style(GTK_BIN(m_widget)->child, style);
+ GtkWidget *child = GTK_BIN(m_widget)->child;
+ gtk_widget_modify_style(child, style);
+
+ // for buttons with images, the path to the label is (at least in 2.12)
+ // GtkButton -> GtkAlignment -> GtkHBox -> GtkLabel
+ if ( GTK_IS_ALIGNMENT(child) )
+ {
+ GtkWidget *box = GTK_BIN(child)->child;
+ if ( GTK_IS_BOX(box) )
+ {
+ GList *items = gtk_container_get_children(GTK_CONTAINER(box));
+ for ( GList *item = items; item; item = item->next )
+ gtk_widget_modify_style(GTK_WIDGET(item->data), style);
+ }
+ }
}
wxSize wxButton::DoGetBestSize() const