From dfc220831a1fcf5658031c528b784afc43999e38 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Thu, 12 Jun 2008 00:50:07 +0000 Subject: [PATCH] propagate style changes correctly to buttons with images (#3939) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@54138 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- docs/changes.txt | 1 + src/gtk/button.cpp | 16 +++++++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/docs/changes.txt b/docs/changes.txt index dd87546c1c..672870f887 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -381,6 +381,7 @@ wxGTK: - Pass current control text to EVT_TEXT handler for wxSpinCtrl (John Ratliff). - Added gtk.tlw.can-set-transparency system option. - Added support for GTK+ print backend +- 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 cfa49892f7..d1876481e8 100644 --- a/src/gtk/button.cpp +++ b/src/gtk/button.cpp @@ -246,7 +246,21 @@ 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); + + // 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 -- 2.45.2