talons

Fork of Claws Mail https://www.claws-mail
Log | Files | Refs | README | LICENSE

commit 29433018c7f23c449aff6a4708aa19f6f22b8ab5
parent aef39e8baa586d28a84c8d164f52bf95e06a10ad
Author: Paweł Pękala <c0rn@gazeta.pl>
Date:   Thu, 10 Dec 2009 16:42:33 +0000

2009-12-10 [pawel]	3.7.3cvs39

	* src/compose.c
		Better fix for cvs28 regression

Diffstat:
MChangeLog | 5+++++
MPATCHSETS | 1+
Mconfigure.ac | 2+-
Msrc/compose.c | 45+++++++++++++++++++++++++++++----------------
4 files changed, 36 insertions(+), 17 deletions(-)

diff --git a/ChangeLog b/ChangeLog @@ -1,3 +1,8 @@ +2009-12-10 [pawel] 3.7.3cvs39 + + * src/compose.c + Better fix for cvs28 regression + 2009-12-10 [iwkse] 3.7.3cvs38 * src/compose.c diff --git a/PATCHSETS b/PATCHSETS @@ -3912,3 +3912,4 @@ ( cvs diff -u -r 1.382.2.533 -r 1.382.2.534 src/compose.c; ) > 3.7.3cvs36.patchset ( cvs diff -u -r 1.382.2.534 -r 1.382.2.535 src/compose.c; ) > 3.7.3cvs37.patchset ( cvs diff -u -r 1.382.2.535 -r 1.382.2.536 src/compose.c; ) > 3.7.3cvs38.patchset +( cvs diff -u -r 1.382.2.536 -r 1.382.2.537 src/compose.c; ) > 3.7.3cvs39.patchset diff --git a/configure.ac b/configure.ac @@ -12,7 +12,7 @@ MINOR_VERSION=7 MICRO_VERSION=3 INTERFACE_AGE=0 BINARY_AGE=0 -EXTRA_VERSION=38 +EXTRA_VERSION=39 EXTRA_RELEASE= EXTRA_GTK2_VERSION= diff --git a/src/compose.c b/src/compose.c @@ -3049,6 +3049,7 @@ static void compose_reply_set_entry(Compose *compose, MsgInfo *msginfo, GSList *cur; gchar *from = NULL; gchar *replyto = NULL; + gchar *ac_email = NULL; gboolean reply_to_ml = FALSE; gboolean default_reply_to = FALSE; @@ -3211,13 +3212,27 @@ static void compose_reply_set_entry(Compose *compose, MsgInfo *msginfo, cc_list = address_list_append_with_comments(cc_list, msginfo->to); cc_list = address_list_append_with_comments(cc_list, compose->cc); + ac_email = g_utf8_strdown(compose->account->address, -1); + if (cc_list) { - for (cur = cc_list; cur != NULL; cur = cur->next) - compose_entry_append(compose, (gchar *)cur->data, - COMPOSE_CC, PREF_NONE); + for (cur = cc_list; cur != NULL; cur = cur->next) { + gchar *addr = g_utf8_strdown(cur->data, -1); + extract_address(addr); + + if (strcmp(ac_email, addr)) + compose_entry_append(compose, (gchar *)cur->data, + COMPOSE_CC, PREF_NONE); + else + debug_print("Cc address same as compose account's, ignoring\n"); + + g_free(addr); + } + slist_free_strings(cc_list); g_slist_free(cc_list); } + + g_free(ac_email); } #define SET_ENTRY(entry, str) \ @@ -4613,20 +4628,12 @@ compose_current_mail_account(void) static void compose_select_account(Compose *compose, PrefsAccount *account, gboolean init) { - gchar *from = NULL, *email, *header; + gchar *from = NULL, *header; ComposeHeaderEntry *header_entry; cm_return_if_fail(account != NULL); - email = g_utf8_strdown(compose->account->address, -1); - g_hash_table_remove(compose->email_hashtable, email); - g_free(email); - compose->account = account; - g_hash_table_insert(compose->email_hashtable, - g_utf8_strdown(account->address, -1), - GUINT_TO_POINTER(1)); - if (account->name && *account->name) { gchar *buf; QUOTE_IF_REQUIRED_NORMAL(buf, account->name, return); @@ -6535,12 +6542,14 @@ static void compose_add_header_entry(Compose *compose, const gchar *header, { ComposeHeaderEntry *last_header = compose->header_last; gchar *tmp = g_strdup(text), *email; + gboolean replyto_hdr = g_str_has_suffix(header, "-To:"); extract_address(tmp); email = g_utf8_strdown(tmp, -1); - if (!(!strcmp(header, "To:") && !strcasecmp(compose->account->address, email)) - && g_hash_table_lookup(compose->email_hashtable, email) != NULL) { + if (replyto_hdr == FALSE && + g_hash_table_lookup(compose->email_hashtable, email) != NULL) + { debug_print("Ignoring duplicate address - %s %s, pref_type: %d\n", header, text, (gint) pref_type); g_free(email); @@ -6552,8 +6561,12 @@ static void compose_add_header_entry(Compose *compose, const gchar *header, gtk_entry_set_text(GTK_ENTRY(last_header->entry), text); last_header->type = pref_type; - g_hash_table_insert(compose->email_hashtable, email, - GUINT_TO_POINTER(1)); + if (replyto_hdr == FALSE) + g_hash_table_insert(compose->email_hashtable, email, + GUINT_TO_POINTER(1)); + else + g_free(email); + g_free(tmp); }