# --- T2-COPYRIGHT-NOTE-BEGIN --- # This copyright note is auto-generated by ./scripts/Create-CopyPatch. # # T2 SDE: package/.../evolution/startup-wizard.patch # Copyright (C) 2004 - 2005 The T2 SDE Project # # More information can be found in the files COPYING and README. # # This patch file is dual-licensed. It is available under the license the # patched project is licensed under, as long as it is an OpenSource license # as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms # of the GNU General Public License as published by the Free Software # Foundation; either version 2 of the License, or (at your option) any later # version. # --- T2-COPYRIGHT-NOTE-END --- Michael Tross * Fix startup wizard infinite loop with gtk-2.6.1 see http://bugzilla.ximian.com/show_bug.cgi?id=71552 diff -ur evolution-2.0.3-old/shell/e-shell-startup-wizard.c evolution-2.0.3/shell/e-shell-startup-wizard.c --- evolution-2.0.3-old/shell/e-shell-startup-wizard.c 2005-01-23 08:02:34.882336448 -0500 +++ evolution-2.0.3/shell/e-shell-startup-wizard.c 2005-01-23 08:21:47.668086376 -0500 @@ -552,7 +552,7 @@ GnomeDruid *druid, SWData *data) { - GtkWidget *dialog; + GtkWidget *dialog, *import_label; ImportDialogPage *import; GList *l, *importers; GtkWidget *table; @@ -566,21 +566,18 @@ data->import_page->prepared = TRUE; - dialog = gtk_message_dialog_new (NULL, 0, GTK_MESSAGE_INFO, - GTK_BUTTONS_NONE, - _("Please wait...\nScanning for existing setups")); -#if !GTK_CHECK_VERSION (2,4,0) - gtk_dialog_set_has_separator (GTK_DIALOG (dialog), FALSE); -#endif - e_make_widget_backing_stored (dialog); - - gtk_window_set_title (GTK_WINDOW (dialog), _("Starting import")); - gtk_widget_show_all (dialog); - gtk_widget_show_now (dialog); - - gtk_widget_queue_draw (dialog); - gdk_flush (); - + /* Work around a dialog handling bug which throws the program into a + * recursive loop (gtk_widget_show_all() would call gtk_dialog_run() + * without a "response" handler, and without issuing a response signal + */ + dialog = gtk_window_new(GTK_WINDOW_TOPLEVEL); + import_label = gtk_label_new(_("Please wait...\nScanning for existing setups")); + gtk_container_add(GTK_CONTAINER(dialog),import_label); + gtk_window_set_title (GTK_WINDOW(dialog), _("Starting import")); + if (gtk_major_version >= 2 && gtk_minor_version >= 4) + gtk_window_set_keep_above(GTK_WINDOW(dialog),TRUE); + gtk_widget_show_all(dialog); + while (gtk_events_pending ()) { gtk_main_iteration (); }