static void
-on_destroy_dialog (GtkDialog *dialog)
+on_destroy_dialog (GtkWidget *dialog)
{
- gtk_widget_destroy (GTK_WIDGET(dialog));
+ /* This could happen when the dialogs get programatically
+ hidden or destroyed (for example when closing the
+ application while a dialog is being shown) */
+ if (!GTK_IS_WIDGET (dialog))
+ return;
+
+ gtk_widget_destroy (dialog);
+
if (gtk_events_pending ())
gtk_main_iteration ();
}
response = gtk_dialog_run (GTK_DIALOG (dialog));
- on_destroy_dialog (GTK_DIALOG(dialog));
-
- while (gtk_events_pending ())
- gtk_main_iteration ();
+ on_destroy_dialog (dialog);
return response;
}
response = gtk_dialog_run (GTK_DIALOG (dialog));
- on_destroy_dialog (GTK_DIALOG(dialog));
-
- while (gtk_events_pending ())
- gtk_main_iteration ();
+ on_destroy_dialog (dialog);
return response;
}
modest_window_mgr_set_modal (modest_runtime_get_window_mgr (), GTK_WINDOW (dialog));
response = gtk_dialog_run (GTK_DIALOG (dialog));
- on_destroy_dialog (GTK_DIALOG(dialog));
-
- while (gtk_events_pending ())
- gtk_main_iteration ();
+ on_destroy_dialog (dialog);
return response;
}
if (block) {
gtk_dialog_run (GTK_DIALOG (note));
- on_destroy_dialog (GTK_DIALOG (note));
-
- while (gtk_events_pending ())
- gtk_main_iteration ();
+ on_destroy_dialog (note);
} else {
g_signal_connect_swapped (note,
"response",
GTK_WINDOW (note));
response = gtk_dialog_run(GTK_DIALOG(note));
- on_destroy_dialog (GTK_DIALOG(note));
+ on_destroy_dialog (note);
g_free (question);
return response == GTK_RESPONSE_OK;
const int response = gtk_dialog_run (GTK_DIALOG (dialog));
retval = (response == GTK_RESPONSE_YES) || (response == GTK_RESPONSE_OK);
- on_destroy_dialog (GTK_DIALOG(dialog));
+ on_destroy_dialog (dialog);
} else {
/* Just show the error text and use the default response: */
modest_platform_run_information_dialog (GTK_WINDOW (main_win),