From 2a14facb0f78e6c5d3e27717d9ae1ac6da4b5633 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 19 Jan 2014 12:58:53 +0000 Subject: [PATCH] Fix setting fonts and colours for wxToggleButton with bitmaps in wxGTK. Apply the fixes of r54138 to wxToggleButton too, the problem of #3939 was not specific to just plain wxButtons. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@75644 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/gtk/tglbtn.cpp | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) 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.