diff --git a/src/gtk/tglbtn.cpp b/src/gtk/tglbtn.cpp index ec811f0b0f..6bc6506d9e 100644 --- a/src/gtk/tglbtn.cpp +++ b/src/gtk/tglbtn.cpp @@ -22,6 +22,7 @@ #include #include "wx/gtk/private.h" +#include "wx/gtk/private/list.h" extern bool g_blockEventsOnDrag; @@ -213,7 +214,23 @@ GtkLabel *wxToggleButton::GTKGetLabel() const void wxToggleButton::DoApplyWidgetStyle(GtkRcStyle *style) { GTKApplyStyle(m_widget, style); - GTKApplyStyle(gtk_bin_get_child(GTK_BIN(m_widget)), style); + GtkWidget* child = gtk_bin_get_child(GTK_BIN(m_widget)); + GTKApplyStyle(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_get_child(GTK_BIN(child)); + if ( GTK_IS_BOX(box) ) + { + wxGtkList list(gtk_container_get_children(GTK_CONTAINER(box))); + for (GList* item = list; item; item = item->next) + { + GTKApplyStyle(GTK_WIDGET(item->data), style); + } + } + } } // Get the "best" size for this control.