X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b04683b19e5cca2747f9ad565b42c5f1545838bc..f0e5a44df103e880f57416f483e8f3f4b4bc9651:/src/gtk/button.cpp diff --git a/src/gtk/button.cpp b/src/gtk/button.cpp index 435358d25f..e21402f843 100644 --- a/src/gtk/button.cpp +++ b/src/gtk/button.cpp @@ -59,6 +59,22 @@ static void gtk_button_clicked_callback( GtkWidget *WXUNUSED(widget), wxButton * button->GetEventHandler()->ProcessEvent(event); } +//----------------------------------------------------------------------------- +// "style_set" from m_widget +//----------------------------------------------------------------------------- + +static gint +gtk_button_style_set_callback( GtkWidget *m_widget, GtkStyle *WXUNUSED(style), wxButton *win ) +{ + if (g_isIdle) + wxapp_install_idle_handler(); + + if (GTK_WIDGET_REALIZED(m_widget)) + win->SetSize( win->m_x, win->m_y, win->m_width, win->m_height ); + + return FALSE; +} + //----------------------------------------------------------------------------- // wxButton //----------------------------------------------------------------------------- @@ -127,22 +143,30 @@ bool wxButton::Create( wxWindow *parent, wxWindowID id, const wxString &label, else if (HasFlag(wxBU_BOTTOM)) y_alignment = 1.0; -#if GTK_CHECK_VERSION(2,4,0) - gtk_button_set_alignment(GTK_BUTTON(m_widget), x_alignment, y_alignment); -#else - if (GTK_IS_MISC(BUTTON_CHILD(m_widget))) - gtk_misc_set_alignment (GTK_MISC (BUTTON_CHILD (m_widget)), - x_alignment, y_alignment); +#if __WXGTK24__ + if (!gtk_check_version(2,4,0)) + { + gtk_button_set_alignment(GTK_BUTTON(m_widget), x_alignment, y_alignment); + } + else #endif + { + if (GTK_IS_MISC(BUTTON_CHILD(m_widget))) + gtk_misc_set_alignment (GTK_MISC (BUTTON_CHILD (m_widget)), + x_alignment, y_alignment); + } SetLabel(label); if (style & wxNO_BORDER) gtk_button_set_relief( GTK_BUTTON(m_widget), GTK_RELIEF_NONE ); - gtk_signal_connect( GTK_OBJECT(m_widget), "clicked", + gtk_signal_connect_after( GTK_OBJECT(m_widget), "clicked", GTK_SIGNAL_FUNC(gtk_button_clicked_callback), (gpointer*)this ); + gtk_signal_connect_after( GTK_OBJECT(m_widget), "style_set", + GTK_SIGNAL_FUNC(gtk_button_style_set_callback), (gpointer*) this ); + m_parent->DoAddChild( this ); PostCreation(size); @@ -229,6 +253,9 @@ void wxButton::SetLabel( const wxString &lbl ) wxString label2 = PrepareLabelMnemonics(label); gtk_button_set_label(GTK_BUTTON(m_widget), wxGTK_CONV(label2)); gtk_button_set_use_stock(GTK_BUTTON(m_widget), FALSE); + + ApplyWidgetStyle( false ); + #else gtk_label_set(GTK_LABEL(BUTTON_CHILD(m_widget)), wxGTK_CONV(GetLabel())); #endif