From d209b896747b519c42c6326fd1d6550ae7f176e5 Mon Sep 17 00:00:00 2001
From: Yan Li <yanli@infradead.org>
Date: Fri, 6 Nov 2009 16:43:58 +0800
Subject: Bug #599792 - Anjal composer's Send button doesn't work after pressed
 Save Drafts button

This is due to an old hack that hiding a composer means we're closing
it so save_draft_done() destroys the composer after saved draft. But
in Anjal, the composer widget is always hidden (since the editor is
reparented to the tab), and will be wrongly destroyed by
save_draft_done() when you clicked "Save Draft" button.

This patch improved the old hack, by adding a new API
e_msg_composer_request_close() that can be used to request closing a
composer (so the old hack is no longer needed). Internally,
composer->priv->application_exiting is used to store this exiting
status.

So by this we no longer use a composer's visibility to check whether
we're to close it. When you no longer need a composer after saved
draft, call e_msg_composer_request_close() before sending the
save-draft signal.

The e_msg_composer_is_exiting() (removed by 983bea9) has to be bring
back, which is needed by other programs that use the composer (Anjal
here).

(forward ported from 08150f6 of gnome-2-28)
---
 mail/em-composer-utils.c | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

(limited to 'mail/em-composer-utils.c')

diff --git a/mail/em-composer-utils.c b/mail/em-composer-utils.c
index b4fcebf803..a555da6bbd 100644
--- a/mail/em-composer-utils.c
+++ b/mail/em-composer-utils.c
@@ -555,10 +555,7 @@ save_draft_done (CamelFolder *folder, CamelMimeMessage *msg, CamelMessageInfo *i
 		emcs->drafts_uid = g_strdup (appended_uid);
 	}
 
-	/* This is kind of a hack, but the composer's CLOSE action
-	 * hides the window before emitting the "save-draft" signal.
-	 * We use that to determine whether to destroy the composer. */
-	if (!GTK_WIDGET_VISIBLE (sdi->composer))
+	if (e_msg_composer_is_exiting (sdi->composer))
 		gtk_widget_destroy (GTK_WIDGET (sdi->composer));
 
  done:
-- 
cgit