BUGFIX: #575701 - Message disappear from unread vfolder, when reply.
authorSrinivasa Ragavan <sragavan@novell.com>
Sat, 20 Jun 2009 14:25:12 +0000 (19:55 +0530)
committerSrinivasa Ragavan <sragavan@novell.com>
Sat, 20 Jun 2009 14:25:12 +0000 (19:55 +0530)
* camel/camel-vee-summary.c: Handle the vfolder case and delay
  folder changed event.

camel/camel-vee-summary.c

index a17d452..6cd4947 100644 (file)
@@ -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);
        }