X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/906c935a80b10d53cecf57f71ab5f3f4f1d529ec..4e15d1caa03346c126015019c1fdf093033ef40b:/src/gtk/tglbtn.cpp?ds=sidebyside diff --git a/src/gtk/tglbtn.cpp b/src/gtk/tglbtn.cpp index 4886ce1fcc..1ad831108f 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; @@ -28,7 +29,7 @@ extern bool g_blockEventsOnDrag; extern "C" { static void gtk_togglebutton_clicked_callback(GtkWidget *WXUNUSED(widget), wxToggleButton *cb) { - if (!cb->m_hasVMT || g_blockEventsOnDrag) + if (g_blockEventsOnDrag) return; // Generate a wx event. @@ -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.