]> granicus.if.org Git - neomutt/commitdiff
Don't set 'replied' flag if user changes References/IRT. Closes #2044.
authorRocco Rutte <pdmef@gmx.net>
Wed, 13 May 2009 12:20:45 +0000 (14:20 +0200)
committerRocco Rutte <pdmef@gmx.net>
Wed, 13 May 2009 12:20:45 +0000 (14:20 +0200)
ChangeLog
send.c

index 45db1ed7f149abf29683ca2d8c00d150fade6735..a9fca3c1e42e6db71ea40b1739f1bf12bfa591a7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2009-05-13 14:19 +0200  Rocco Rutte  <pdmef@gmx.net>  (c46e734a9f9f)
+
+       * mutt.h, muttlib.c: Add mutt_find_list() to lookup data in lists
+
+2009-05-13 12:52 +0200  Rocco Rutte  <pdmef@gmx.net>  (19e62bd1549b)
+
+       * ChangeLog, alias.c, crypt-gpgme.c, group.c, mbox.c, pgp.c, query.c,
+       rfc822.c, rfc822.h, send.c, smime.c: Prune empty address groups when
+       preparing replies. Closes #2875.
+
 2009-05-13 12:21 +0200  Rocco Rutte  <pdmef@gmx.net>  (ce0e5c895032)
 
        * mbox.c: Actually reopen mbox/mmdf files in case we find
diff --git a/send.c b/send.c
index 768fc23576fc1b652ea48837204698a982f02ab9..a8cb088913263d8f980e4ca3ca742a94bb8f930d 100644 (file)
--- a/send.c
+++ b/send.c
@@ -1088,6 +1088,12 @@ int mutt_resend_message (FILE *fp, CONTEXT *ctx, HEADER *cur)
   return ci_send_message (SENDRESEND, msg, NULL, ctx, cur);
 }
 
+static int is_reply (HEADER *reply, HEADER *orig)
+{
+  return mutt_find_list (orig->env->references, reply->env->message_id) ||
+         mutt_find_list (orig->env->in_reply_to, reply->env->message_id);
+}
+
 int
 ci_send_message (int flags,            /* send mode */
                 HEADER *msg,           /* template to use for new message */
@@ -1792,15 +1798,18 @@ full_fcc:
   if (WithCrypto && free_clear_content)
     mutt_free_body (&clear_content);
 
+  /* set 'replied' flag only if the user didn't change/remove
+     In-Reply-To: and References: headers during edit */
   if (flags & SENDREPLY)
   {
     if (cur && ctx)
-      mutt_set_flag (ctx, cur, M_REPLIED, 1);
+      mutt_set_flag (ctx, cur, M_REPLIED, is_reply (cur, msg));
     else if (!(flags & SENDPOSTPONED) && ctx && ctx->tagged)
     {
       for (i = 0; i < ctx->vcount; i++)
        if (ctx->hdrs[ctx->v2r[i]]->tagged)
-         mutt_set_flag (ctx, ctx->hdrs[ctx->v2r[i]], M_REPLIED, 1);
+         mutt_set_flag (ctx, ctx->hdrs[ctx->v2r[i]], M_REPLIED,
+                        is_reply (ctx->hdrs[ctx->v2r[i]], msg));
     }
   }