From 300a4e978c80080195784454653a1a410af7ede9 Mon Sep 17 00:00:00 2001 From: Sushma Rai Date: Mon, 9 Jan 2006 13:29:27 +0000 Subject: Fixed the issue of subscribe to other users folder being modal. Fixes #314748 svn path=/trunk/; revision=31103 --- plugins/exchange-operations/ChangeLog | 7 +++++ .../exchange-folder-subscription.c | 32 ++++++++++------------ 2 files changed, 22 insertions(+), 17 deletions(-) diff --git a/plugins/exchange-operations/ChangeLog b/plugins/exchange-operations/ChangeLog index 314a0f4f12..ec80531a7b 100644 --- a/plugins/exchange-operations/ChangeLog +++ b/plugins/exchange-operations/ChangeLog @@ -1,3 +1,10 @@ +2006-01-09 Sushma Rai + + * exchange-folder-subscription.c (create_folder_subscription_dialog): + Instead of gtk_dialog_run(), calling gtk_widget_show(). + (dialog_destroy): Added callback to do the cleanup on closing the + window. Fixes #314748. + 2006-01-06 Simon Zheng * exchange-account-setup.c: diff --git a/plugins/exchange-operations/exchange-folder-subscription.c b/plugins/exchange-operations/exchange-folder-subscription.c index c9477e57a7..d48e828794 100644 --- a/plugins/exchange-operations/exchange-folder-subscription.c +++ b/plugins/exchange-operations/exchange-folder-subscription.c @@ -155,6 +155,18 @@ setup_server_option_menu (GladeXML *glade_xml, gchar *mail_account) /* FIXME: Default to the current storage in the shell view. */ } +static void +dialog_destroy (GtkWidget *dialog, gint response, gpointer data) { + ENameSelector *name_selector = data; + + if (response == GTK_RESPONSE_OK || response == GTK_RESPONSE_CANCEL) { + if (name_selector) { + g_object_unref (name_selector); + name_selector = NULL; + } + gtk_widget_destroy (dialog); + } +} gboolean create_folder_subscription_dialog (gchar *mail_account, gchar *fname, gchar **user_email_address_ret, gchar **folder_name_ret) @@ -165,7 +177,6 @@ create_folder_subscription_dialog (gchar *mail_account, gchar *fname, gchar **us GtkWidget *name_selector_widget; GtkWidget *folder_name_entry; char *user_email_address = NULL; - int response; EDestinationStore *destination_store; GList *destinations; EDestination *destination; @@ -193,19 +204,12 @@ create_folder_subscription_dialog (gchar *mail_account, gchar *fname, gchar **us G_CALLBACK (folder_name_entry_changed_callback), dialog); while (TRUE) { - response = gtk_dialog_run (GTK_DIALOG (dialog)); - if (response == GTK_RESPONSE_CANCEL) { - gtk_widget_destroy (dialog); - g_object_unref (name_selector); - return FALSE; - } + g_signal_connect (dialog, "response", G_CALLBACK(dialog_destroy), name_selector); + gtk_widget_show (dialog); destination_store = e_name_selector_entry_peek_destination_store (E_NAME_SELECTOR_ENTRY (GTK_ENTRY (name_selector_widget))); destinations = e_destination_store_list_destinations (destination_store); - if (!destinations) { - gtk_widget_destroy (dialog); - g_object_unref (name_selector); + if (!destinations) return FALSE; - } destination = destinations->data; user_email_address = g_strdup (e_destination_get_email (destination)); g_list_free (destinations); @@ -216,18 +220,12 @@ create_folder_subscription_dialog (gchar *mail_account, gchar *fname, gchar **us /* It would be nice to insensitivize the OK button appropriately instead of doing this, but unfortunately we can't do this for the Bonobo control. */ e_error_run (GTK_WINDOW (dialog), ERROR_DOMAIN ":select-user", NULL); - - } - gtk_widget_show_all (dialog); if (user_email_address) *user_email_address_ret = user_email_address; *folder_name_ret = g_strdup (gtk_entry_get_text (GTK_ENTRY (folder_name_entry))); - gtk_widget_destroy (dialog); - g_object_unref (name_selector); return TRUE; - } -- cgit v1.2.3