diff options
author | Philip Withnall <bugzilla@tecnocode.co.uk> | 2009-08-07 10:32:55 +0800 |
---|---|---|
committer | Matthew Barnes <mbarnes@redhat.com> | 2009-08-07 11:05:45 +0800 |
commit | 35fadc2d399c6b647b48fbe6ecab4259dffc11f3 (patch) | |
tree | c3a378fd31994f373764ace7eb934c3e805cef70 /composer/e-msg-composer.c | |
parent | 052e89dd423b5ba2f394f55c2fcc48102e7b9bc3 (diff) | |
download | gsoc2013-evolution-35fadc2d399c6b647b48fbe6ecab4259dffc11f3.tar gsoc2013-evolution-35fadc2d399c6b647b48fbe6ecab4259dffc11f3.tar.gz gsoc2013-evolution-35fadc2d399c6b647b48fbe6ecab4259dffc11f3.tar.bz2 gsoc2013-evolution-35fadc2d399c6b647b48fbe6ecab4259dffc11f3.tar.lz gsoc2013-evolution-35fadc2d399c6b647b48fbe6ecab4259dffc11f3.tar.xz gsoc2013-evolution-35fadc2d399c6b647b48fbe6ecab4259dffc11f3.tar.zst gsoc2013-evolution-35fadc2d399c6b647b48fbe6ecab4259dffc11f3.zip |
Bug 590747 – Composer autosave can easily lose data
Diffstat (limited to 'composer/e-msg-composer.c')
-rw-r--r-- | composer/e-msg-composer.c | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/composer/e-msg-composer.c b/composer/e-msg-composer.c index 55bfc84492..1b2d5c665c 100644 --- a/composer/e-msg-composer.c +++ b/composer/e-msg-composer.c @@ -1264,6 +1264,15 @@ set_editor_text (EMsgComposer *composer, /* Commands. */ +static void +autosave_load_draft_cb (EMsgComposer *composer, GAsyncResult *result, + gchar *filename) +{ + if (e_composer_autosave_snapshot_finish (composer, result, NULL)) + g_unlink (filename); + g_free (filename); +} + static EMsgComposer * autosave_load_draft (const gchar *filename) { @@ -1284,8 +1293,13 @@ autosave_load_draft (const gchar *filename) composer = e_msg_composer_new_with_message (msg); if (composer) { - if (e_composer_autosave_snapshot (composer)) - g_unlink (filename); + /* Mark the message as changed so it gets autosaved again, then + * we can safely remove the old autosave file in + * autosave_load_draft_cb */ + gtkhtml_editor_set_changed (GTKHTML_EDITOR (composer), FALSE); + e_composer_autosave_snapshot_async (composer, + (GAsyncReadyCallback) autosave_load_draft_cb, + g_strdup (filename)); gtk_widget_show (GTK_WIDGET (composer)); } @@ -3883,7 +3897,9 @@ e_msg_composer_request_close_all (void) * which is misleading. */ composer->priv->application_exiting = TRUE; - e_composer_autosave_snapshot (composer); + e_composer_autosave_snapshot_async (composer, + (GAsyncReadyCallback) e_composer_autosave_snapshot_finish, + NULL); gtk_action_activate (ACTION (CLOSE)); } |