From d060ae855ff3a4a5abb3cab5f1e306196b2e5f32 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 23 Aug 2008 18:17:12 +0000 Subject: [PATCH] fix changing font/colour of label in buttons with images (#3939) [backport from trunk] git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_8_BRANCH@55209 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- docs/changes.txt | 1 + src/gtk/button.cpp | 14 +++++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/docs/changes.txt b/docs/changes.txt index ce842d7764..5c9ab1638b 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -147,6 +147,7 @@ wxGTK: - Fixed generation of events for an initially empty wxDirPickerCtrl. - Fixed detection of Meta key state so that NumLock isn't misdetected as Meta (requires GTK+ 2.10). +- Fix changing font/colour of label in buttons with images (Marcin Wojdyr). wxMac: diff --git a/src/gtk/button.cpp b/src/gtk/button.cpp index 33414ba2ad..73758e1288 100644 --- a/src/gtk/button.cpp +++ b/src/gtk/button.cpp @@ -265,7 +265,19 @@ GdkWindow *wxButton::GTKGetWindow(wxArrayGdkWindows& WXUNUSED(windows)) const 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); + + // in gtk+ 2.12, in case of button with image, the path to the label is: + // 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