From 4d6b5df7c412d5cc18f85ec31e567321405255cc Mon Sep 17 00:00:00 2001 From: Srinivasa Ragavan Date: Sat, 20 Jun 2009 19:55:12 +0530 Subject: [PATCH] BUGFIX: #575701 - Message disappear from unread vfolder, when reply. * camel/camel-vee-summary.c: Handle the vfolder case and delay folder changed event. --- camel/camel-vee-summary.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/camel/camel-vee-summary.c b/camel/camel-vee-summary.c index a17d452..6cd4947 100644 --- a/camel/camel-vee-summary.c +++ b/camel/camel-vee-summary.c @@ -145,11 +145,36 @@ static gboolean vee_info_set_user_flag(CamelMessageInfo *mi, const gchar *name, gboolean value) { gint res = FALSE; + gboolean hacked_unread_folder = FALSE; + CamelVeeFolder *vf = (CamelVeeFolder *)mi->summary->folder; + + if (camel_debug("vfolderexp")) + printf("Expression for vfolder '%s' is '%s'\n", mi->summary->folder->full_name, g_strescape(vf->expression, "")); + + if (vf->priv->unread_vfolder == -1) + camel_vee_summary_load_check_unread_vfolder (CAMEL_VEE_SUMMARY (mi->summary)); + + if (vf->priv->unread_vfolder == 1) + hacked_unread_folder = TRUE; + else { + gchar *meta = camel_object_meta_get (mi->summary->folder, "vfolder:unread"); + if (meta && strcmp (meta, "true") == 0) + hacked_unread_folder = TRUE; + g_free(meta); + } if (mi->uid) { CamelMessageInfo *rmi = camel_folder_summary_uid (((CamelVeeMessageInfo *)mi)->summary, mi->uid+8); HANDLE_NULL_INFO(FALSE); + + if (hacked_unread_folder) + camel_vee_folder_mask_event_folder_changed ((CamelVeeFolder *)mi->summary->folder, rmi->summary->folder); + res = camel_message_info_set_user_flag(rmi, name, value); + + if (hacked_unread_folder) + camel_vee_folder_unmask_event_folder_changed ((CamelVeeFolder *)mi->summary->folder, rmi->summary->folder); + camel_message_info_free (rmi); } -- 2.7.4