X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b4354db179f5b9f3107cc532bb5232deccab90d0..7d6a4d96961eac84d05db8bb24c64d39003f6e54:/src/gtk/tglbtn.cpp?ds=inline diff --git a/src/gtk/tglbtn.cpp b/src/gtk/tglbtn.cpp index 4886ce1fcc..0589a9b70d 100644 --- a/src/gtk/tglbtn.cpp +++ b/src/gtk/tglbtn.cpp @@ -21,6 +21,7 @@ #include "wx/button.h" #endif +#include #include "wx/gtk/private.h" extern bool g_blockEventsOnDrag; @@ -166,6 +167,14 @@ void wxToggleButton::SetLabel(const wxString& label) wxAnyButton::SetLabel(label); + if ( HasFlag(wxBU_NOTEXT) ) + { + // Don't try to update the label for a button not showing it, this is + // unnecessary and can also actually replace the image we show with the + // label entirely breaking the button code, see #13693. + return; + } + const wxString labelGTK = GTKConvertMnemonics(label); gtk_button_set_label(GTK_BUTTON(m_widget), wxGTK_CONV(labelGTK)); @@ -184,10 +193,13 @@ bool wxToggleButton::DoSetLabelMarkup(const wxString& markup) wxControl::SetLabel(stripped); - GtkLabel * const label = GTKGetLabel(); - wxCHECK_MSG( label, false, "no label in this toggle button?" ); + if ( !HasFlag(wxBU_NOTEXT) ) + { + GtkLabel * const label = GTKGetLabel(); + wxCHECK_MSG( label, false, "no label in this toggle button?" ); - GTKSetLabelWithMarkupForLabel(label, markup); + GTKSetLabelWithMarkupForLabel(label, markup); + } return true; } @@ -201,8 +213,8 @@ GtkLabel *wxToggleButton::GTKGetLabel() const void wxToggleButton::DoApplyWidgetStyle(GtkRcStyle *style) { - gtk_widget_modify_style(m_widget, style); - gtk_widget_modify_style(gtk_bin_get_child(GTK_BIN(m_widget)), style); + GTKApplyStyle(m_widget, style); + GTKApplyStyle(gtk_bin_get_child(GTK_BIN(m_widget)), style); } // Get the "best" size for this control.