# HG changeset patch # User Will Thompson # Date 1194220663 0 # Node ID 7e07f5b271e554cc796675af75553b6e5ba12c8c # Parent 7ea1f93cffe20405b947be2149fe400781b3cd6d Use an idle callback to destroy PidginMiniDialogs when a button is pressed. Calling gtk_widget_destroy() directly from the button-clicked callback was eating the stack. diff -r 7ea1f93cffe2 -r 7e07f5b271e5 pidgin/minidialog.c --- a/pidgin/minidialog.c Sun Nov 04 23:56:25 2007 +0000 +++ b/pidgin/minidialog.c Sun Nov 04 23:57:43 2007 +0000 @@ -99,6 +99,13 @@ gpointer user_data; }; +static gboolean +idle_destroy_cb(GtkWidget *mini_dialog) +{ + gtk_widget_destroy(mini_dialog); + return FALSE; +} + static void mini_dialog_button_clicked_cb(GtkButton *button, gpointer user_data) @@ -107,7 +114,7 @@ data->callback(data->mini_dialog, button, data->user_data); - gtk_widget_destroy(GTK_WIDGET(data->mini_dialog)); + g_idle_add((GSourceFunc) idle_destroy_cb, data->mini_dialog); } static void