From 86173d8ff8dc921b3a4347d891ae53f2f88fdc12 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Pawe=C5=82=20P=C4=99kala?= Date: Mon, 8 Feb 2010 17:54:10 +0000 Subject: [PATCH] 2010-02-08 [pawel] 3.7.5cvs8 * src/compose.c * src/compose.h * src/common/utils.c * src/common/utils.h * src/gtk/authors.h Fix Bug 2058 "use in-reply-to info passed in mailto: links" Patch by Laurent Bigonville with slight modifications --- ChangeLog | 10 ++++++++++ PATCHSETS | 1 + configure.ac | 2 +- src/common/utils.c | 5 ++++- src/common/utils.h | 3 ++- src/compose.c | 21 +++++++++++++++++---- src/compose.h | 3 ++- src/gtk/authors.h | 1 + 8 files changed, 38 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index fb4d3a6ac..601f3ea75 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2010-02-08 [pawel] 3.7.5cvs8 + + * src/compose.c + * src/compose.h + * src/common/utils.c + * src/common/utils.h + * src/gtk/authors.h + Fix Bug 2058 "use in-reply-to info passed in mailto: links" + Patch by Laurent Bigonville with slight modifications + 2010-02-03 [pawel] 3.7.5cvs7 * m4/.cvsignore diff --git a/PATCHSETS b/PATCHSETS index 25ef94a5b..2785b6bb4 100644 --- a/PATCHSETS +++ b/PATCHSETS @@ -3948,3 +3948,4 @@ ( cvs diff -u -r 1.28.2.42 -r 1.28.2.43 src/addrindex.c; cvs diff -u -r 1.8.2.36 -r 1.8.2.37 src/editldap.c; cvs diff -u -r 1.2.2.19 -r 1.2.2.20 src/ldapctrl.c; cvs diff -u -r 1.1.4.14 -r 1.1.4.15 src/ldapctrl.h; cvs diff -u -r 1.3.2.33 -r 1.3.2.34 src/ldapquery.c; cvs diff -u -r 1.1.2.23 -r 1.1.2.24 src/ldapupdate.c; ) > 3.7.5cvs5.patchset ( cvs diff -u -r 1.14.2.69 -r 1.14.2.70 src/plugins/trayicon/trayicon.c; ) > 3.7.5cvs6.patchset ( cvs diff -u -r 1.2.4.1 -r 1.2.4.2 m4/.cvsignore; ) > 3.7.5cvs7.patchset +( cvs diff -u -r 1.382.2.541 -r 1.382.2.542 src/compose.c; cvs diff -u -r 1.50.2.58 -r 1.50.2.59 src/compose.h; cvs diff -u -r 1.36.2.182 -r 1.36.2.183 src/common/utils.c; cvs diff -u -r 1.20.2.73 -r 1.20.2.74 src/common/utils.h; cvs diff -u -r 1.1.2.64 -r 1.1.2.65 src/gtk/authors.h; ) > 3.7.5cvs8.patchset diff --git a/configure.ac b/configure.ac index c1da31182..a8d0be3cf 100644 --- a/configure.ac +++ b/configure.ac @@ -12,7 +12,7 @@ MINOR_VERSION=7 MICRO_VERSION=5 INTERFACE_AGE=0 BINARY_AGE=0 -EXTRA_VERSION=7 +EXTRA_VERSION=8 EXTRA_RELEASE= EXTRA_GTK2_VERSION= diff --git a/src/common/utils.c b/src/common/utils.c index f4ec081fb..2dccd111f 100644 --- a/src/common/utils.c +++ b/src/common/utils.c @@ -1551,7 +1551,7 @@ static gchar *decode_uri_gdup(const gchar *encoded_uri) } gint scan_mailto_url(const gchar *mailto, gchar **from, gchar **to, gchar **cc, gchar **bcc, - gchar **subject, gchar **body, gchar ***attach) + gchar **subject, gchar **body, gchar ***attach, gchar **inreplyto) { gchar *tmp_mailto; gchar *p; @@ -1659,6 +1659,9 @@ gint scan_mailto_url(const gchar *mailto, gchar **from, gchar **to, gchar **cc, my_att[num_attach-1] = tmp; my_att[num_attach] = NULL; } + } else if (inreplyto && !*inreplyto && + !g_ascii_strcasecmp(field, "in-reply-to")) { + *inreplyto = decode_uri_gdup(value); } } diff --git a/src/common/utils.h b/src/common/utils.h index 92b4b5780..2bdc1fc83 100644 --- a/src/common/utils.h +++ b/src/common/utils.h @@ -405,7 +405,8 @@ gint scan_mailto_url (const gchar *mailto, gchar **bcc, gchar **subject, gchar **body, - gchar ***attach); + gchar ***attach, + gchar **inreplyto); /* return static strings */ const gchar *get_home_dir (void); diff --git a/src/compose.c b/src/compose.c index 429e77c45..734ad44ea 100644 --- a/src/compose.c +++ b/src/compose.c @@ -949,7 +949,7 @@ Compose *compose_generic_new(PrefsAccount *account, const gchar *mailto, FolderI /* check if mailto defines a from */ if (mailto && *mailto != '\0') { - scan_mailto_url(mailto, &mailto_from, NULL, NULL, NULL, NULL, NULL, NULL); + scan_mailto_url(mailto, &mailto_from, NULL, NULL, NULL, NULL, NULL, NULL, NULL); /* mailto defines a from, check if we can get account prefs from it, if not, the account prefs will be guessed using other ways, but we'll keep the from anyway */ @@ -2484,6 +2484,9 @@ void compose_entry_append(Compose *compose, const gchar *address, case COMPOSE_FOLLOWUPTO: header = N_( "Followup-To:"); break; + case COMPOSE_INREPLYTO: + header = N_( "In-Reply-To:"); + break; case COMPOSE_TO: default: header = N_("To:"); @@ -2616,10 +2619,11 @@ static MailField compose_entries_set(Compose *compose, const gchar *mailto, Comp gchar *temp = NULL; gsize len = 0; gchar **attach = NULL; + gchar *inreplyto = NULL; MailField mfield = NO_FIELD_PRESENT; /* get mailto parts but skip from */ - scan_mailto_url(mailto, NULL, &to, &cc, &bcc, &subject, &body, &attach); + scan_mailto_url(mailto, NULL, &to, &cc, &bcc, &subject, &body, &attach, &inreplyto); if (to) { compose_entry_append(compose, to, to_type, PREF_MAILTO); @@ -2693,12 +2697,16 @@ static MailField compose_entries_set(Compose *compose, const gchar *mailto, Comp g_free(warn_files); } } + if (inreplyto) + compose_entry_append(compose, inreplyto, COMPOSE_INREPLYTO, PREF_MAILTO); + g_free(to); g_free(cc); g_free(bcc); g_free(subject); g_free(body); g_strfreev(attach); + g_free(inreplyto); return mfield; } @@ -2787,7 +2795,7 @@ static gint compose_parse_header(Compose *compose, MsgInfo *msginfo) start = strstr(hentry[H_LIST_POST].body, "mailto:"); scan_mailto_url(start ? start : hentry[H_LIST_POST].body, - NULL, &to, NULL, NULL, NULL, NULL, NULL); + NULL, &to, NULL, NULL, NULL, NULL, NULL, NULL); if (to) { g_free(compose->ml_post); @@ -3274,6 +3282,7 @@ static void compose_reedit_set_entry(Compose *compose, MsgInfo *msginfo) SET_ADDRESS(COMPOSE_REPLYTO, compose->replyto); SET_ADDRESS(COMPOSE_NEWSGROUPS, compose->newsgroups); SET_ADDRESS(COMPOSE_FOLLOWUPTO, compose->followup_to); + SET_ADDRESS(COMPOSE_INREPLYTO, compose->inreplyto); compose_update_priority_menu_item(compose); compose_update_privacy_system_menu_item(compose, FALSE); @@ -6572,7 +6581,11 @@ static void compose_add_header_entry(Compose *compose, const gchar *header, return; } - combobox_select_by_text(GTK_COMBO_BOX(last_header->combo), header); + if (!strcmp(header, prefs_common_translated_header_name("In-Reply-To:"))) + gtk_entry_set_text(GTK_ENTRY( + gtk_bin_get_child(GTK_BIN(last_header->combo))), header); + else + combobox_select_by_text(GTK_COMBO_BOX(last_header->combo), header); gtk_entry_set_text(GTK_ENTRY(last_header->entry), text); last_header->type = pref_type; diff --git a/src/compose.h b/src/compose.h index affef99da..da0e4bfb9 100644 --- a/src/compose.h +++ b/src/compose.h @@ -52,7 +52,8 @@ typedef enum COMPOSE_BCC, COMPOSE_REPLYTO, COMPOSE_NEWSGROUPS, - COMPOSE_FOLLOWUPTO + COMPOSE_FOLLOWUPTO, + COMPOSE_INREPLYTO } ComposeEntryType; typedef enum diff --git a/src/gtk/authors.h b/src/gtk/authors.h index 4049de397..7b91a99a9 100644 --- a/src/gtk/authors.h +++ b/src/gtk/authors.h @@ -89,6 +89,7 @@ static char *CONTRIBS_LIST[] = { "M. Benkmann", "Wilbert Berendsen", "Didier Barvaux", +"Laurent Bigonville", "Jean-Luc Biord", "Pavlo Bohmat", "Eugene Brevdo", -- 2.25.1