ifactory = gtk_item_factory_from_widget(compose->menubar);
compose->replyinfo = NULL;
+ compose->fwdinfo = NULL;
text = GTK_STEXT(compose->text);
gtk_stext_freeze(text);
}
g_return_val_if_fail(account != NULL, NULL);
- MSG_UNSET_PERM_FLAGS(msginfo->flags, MSG_REPLIED);
- MSG_SET_PERM_FLAGS(msginfo->flags, MSG_FORWARDED);
- if (MSG_IS_IMAP(msginfo->flags))
- imap_msg_unset_perm_flags(msginfo, MSG_REPLIED);
-
compose = compose_create(account, COMPOSE_FORWARD);
+ compose->fwdinfo = procmsg_msginfo_get_full_info(msginfo);
+ if (!compose->fwdinfo)
+ compose->fwdinfo = procmsg_msginfo_copy(msginfo);
+
if (msginfo->subject && *msginfo->subject) {
gtk_entry_set_text(GTK_ENTRY(compose->subject_entry), "Fw: ");
gtk_entry_append_text(GTK_ENTRY(compose->subject_entry),
ifactory = gtk_item_factory_from_widget(compose->menubar);
compose->replyinfo = NULL;
+ compose->fwdinfo = NULL;
compose_show_first_last_header(compose, TRUE);
fprintf(fp, "RMID:%s\x7f%d\x7f%s\n", folderid, compose->replyinfo->msgnum, compose->replyinfo->msgid);
g_free(folderid);
}
+ /* Message-ID of message forwarding to */
+ if ((compose->fwdinfo != NULL) && (compose->fwdinfo->msgid != NULL)) {
+ gchar *folderid;
+
+ folderid = folder_item_get_identifier(compose->fwdinfo->folder);
+ fprintf(fp, "FMID:%s\x7f%d\x7f%s\n", folderid, compose->fwdinfo->msgnum, compose->fwdinfo->msgid);
+ g_free(folderid);
+ }
fprintf(fp, "\n");
while (fgets(buf, sizeof(buf), src_fp) != NULL) {
compose->targetinfo = NULL;
compose->replyinfo = NULL;
+ compose->fwdinfo = NULL;
compose->replyto = NULL;
compose->cc = NULL;
procmsg_msginfo_free(compose->targetinfo);
procmsg_msginfo_free(compose->replyinfo);
+ procmsg_msginfo_free(compose->fwdinfo);
g_free(compose->replyto);
g_free(compose->cc);
Q_NEWS_ACCOUNT_ID = 5,
Q_SAVE_COPY_FOLDER = 6,
Q_REPLY_MESSAGE_ID = 7,
+ Q_FWD_MESSAGE_ID = 8
};
gint procmsg_send_message_queue(const gchar *file)
{"NAID:", NULL, FALSE},
{"SCF:", NULL, FALSE},
{"RMID:", NULL, FALSE},
+ {"FMID:", NULL, FALSE},
{NULL, NULL, FALSE}};
FILE *fp;
gint filepos;
GSList *newsgroup_list = NULL;
gchar *savecopyfolder = NULL;
gchar *replymessageid = NULL;
+ gchar *fwdmessageid = NULL;
gchar buf[BUFFSIZE];
gint hnum;
PrefsAccount *mailac = NULL, *newsac = NULL;
case Q_REPLY_MESSAGE_ID:
if (!replymessageid) replymessageid = g_strdup(p);
break;
+ case Q_FWD_MESSAGE_ID:
+ if (!fwdmessageid) fwdmessageid = g_strdup(p);
+ break;
}
}
filepos = ftell(fp);
procmsg_save_to_outbox(outbox, file, TRUE);
}
- if (replymessageid != NULL) {
+ if (replymessageid != NULL || fwdmessageid != NULL) {
gchar **tokens;
FolderItem *item;
- tokens = g_strsplit(replymessageid, "\x7f", 0);
+ if (replymessageid != NULL)
+ tokens = g_strsplit(replymessageid, "\x7f", 0);
+ else
+ tokens = g_strsplit(fwdmessageid, "\x7f", 0);
item = folder_find_item_from_identifier(tokens[0]);
if (item != NULL) {
MsgInfo *msginfo;
}
if (msginfo != NULL) {
- procmsg_msginfo_unset_flags(msginfo, MSG_FORWARDED, 0);
- procmsg_msginfo_set_flags(msginfo, MSG_REPLIED, 0);
-
+ if (replymessageid != NULL) {
+ procmsg_msginfo_unset_flags(msginfo, MSG_FORWARDED, 0);
+ procmsg_msginfo_set_flags(msginfo, MSG_REPLIED, 0);
+ }
+ else {
+ procmsg_msginfo_unset_flags(msginfo, MSG_REPLIED, 0);
+ procmsg_msginfo_set_flags(msginfo, MSG_FORWARDED, 0);
+ }
procmsg_msginfo_free(msginfo);
}
}
g_free(savecopyfolder);
g_free(replymessageid);
+ g_free(fwdmessageid);
return (newsval != 0 ? newsval : mailval);
}