X-Git-Url: http://git.claws-mail.org/?p=claws.git;a=blobdiff_plain;f=src%2Fprocmsg.c;h=2973bbb2dbcccc19e707e1ed9ee619c0790914fa;hp=df2ee1396f2f17f06255edce3cb68f0a507f12d3;hb=baa876f669958355ce180452613bfdf2e5d4d163;hpb=e9fc046e8bf7c88777aaa3f593deef36339d71a8 diff --git a/src/procmsg.c b/src/procmsg.c index df2ee1396..2973bbb2d 100644 --- a/src/procmsg.c +++ b/src/procmsg.c @@ -589,6 +589,7 @@ GNode *procmsg_get_thread_tree(GSList *mlist) MsgInfo *msginfo; const gchar *msgid; const gchar *subject; + GNode *found_subject; root = g_node_new(NULL); msgid_table = g_hash_table_new(g_str_hash, g_str_equal); @@ -616,10 +617,20 @@ GNode *procmsg_get_thread_tree(GSList *mlist) g_hash_table_insert(msgid_table, (gchar *)msgid, node); subject = msginfo->subject; - if (subject_table_lookup(subject_table, - (gchar *) subject) == NULL) - subject_table_insert(subject_table, (gchar *)subject, + found_subject = subject_table_lookup(subject_table, + (gchar *) subject); + if (found_subject == NULL) + subject_table_insert(subject_table, (gchar *) subject, node); + else { + /* replace if msg in table is older than current one + * can add here more stuff. */ + if ( ((MsgInfo*)(found_subject->data))->date_t > + ((MsgInfo*)(node->data))->date_t ) { + subject_table_remove(subject_table, (gchar *) subject); + subject_table_insert(subject_table, (gchar *) subject, node); + } + } } /* complete the unfinished threads */