diff options
Diffstat (limited to 'mail/e-mail-paned-view.c')
-rw-r--r-- | mail/e-mail-paned-view.c | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/mail/e-mail-paned-view.c b/mail/e-mail-paned-view.c index 7a510e3ebd..ea017c758b 100644 --- a/mail/e-mail-paned-view.c +++ b/mail/e-mail-paned-view.c @@ -778,6 +778,32 @@ mail_paned_view_get_view_instance (EMailView *view) return paned_view->priv->view_instance; } +static gchar * +empv_create_view_id (CamelFolder *folder) +{ + GChecksum *checksum; + gchar *res, *folder_uri; + + g_return_val_if_fail (folder != NULL, NULL); + + folder_uri = e_mail_folder_uri_from_folder (folder); + g_return_val_if_fail (folder_uri != NULL, NULL); + + /* to be able to migrate previously saved views */ + e_filename_make_safe (folder_uri); + + /* use MD5 checksum of the folder URI, to not depend on its length */ + checksum = g_checksum_new (G_CHECKSUM_MD5); + g_checksum_update (checksum, (const guchar *) folder_uri, -1); + + res = g_strdup (g_checksum_get_string (checksum)); + + g_checksum_free (checksum); + g_free (folder_uri); + + return res; +} + static void mail_paned_view_update_view_instance (EMailView *view) { @@ -819,7 +845,7 @@ mail_paned_view_update_view_instance (EMailView *view) priv->view_instance = NULL; } - view_id = e_mail_folder_uri_from_folder (folder); + view_id = empv_create_view_id (folder); e_filename_make_safe (view_id); outgoing_folder = |