+2003-07-28 [alfons] 0.9.3claws69
+
+ * src/procmsg.[ch]
+ * src/messageview.c
+ * src/procheader.c
+ rewrite return receipt request work a little bit (the former
+ implementation presumably depended too much on the UI setting
+ flags). (we're losing the old pending flag.)
+
2003-07-28 [christoph] 0.9.3claws68
* src/folder.c
MICRO_VERSION=3
INTERFACE_AGE=0
BINARY_AGE=0
-EXTRA_VERSION=68
+EXTRA_VERSION=69
if test $EXTRA_VERSION -eq 0; then
VERSION=${MAJOR_VERSION}.${MINOR_VERSION}.${MICRO_VERSION}claws
else
procmime_mimeinfo_free_all(mimeinfo);
}
- if (MSG_IS_RETRCPT_PENDING(messageview->msginfo->flags))
+ if ((messageview->msginfo->dispositionnotificationto ||
+ messageview->msginfo->returnreceiptto) &&
+ !MSG_IS_RETRCPT_SENT(messageview->msginfo->flags))
return_receipt_show(messageview->noticeview, messageview->msginfo);
else
noticeview_hide(messageview->noticeview);
tmpmsginfo->msgnum = msginfo->msgnum;
if (disposition_notification_send(tmpmsginfo) >= 0) {
- procmsg_msginfo_unset_flags(msginfo, MSG_RETRCPT_PENDING, 0);
+ procmsg_msginfo_set_flags(msginfo, MSG_RETRCPT_SENT, 0);
noticeview_hide(noticeview);
}
case H_DISPOSITION_NOTIFICATION_TO:
if (msginfo->dispositionnotificationto) break;
msginfo->dispositionnotificationto = g_strdup(hp);
- MSG_SET_PERM_FLAGS(msginfo->flags, MSG_RETRCPT_PENDING);
break;
case H_RETURN_RECEIPT_TO:
if (msginfo->returnreceiptto) break;
msginfo->returnreceiptto = g_strdup(hp);
- MSG_SET_PERM_FLAGS(msginfo->flags, MSG_RETRCPT_PENDING);
break;
#ifdef ALLOW_HEADER_HINT
case H_STATUS:
gboolean is_queued)
{
gint num;
- MsgInfo *msginfo;
+ MsgInfo *msginfo, *tmp_msginfo;
debug_print("saving sent message...\n");
}
return -1;
}
- msginfo = folder_item_get_msginfo(outbox, num);
+ msginfo = folder_item_get_msginfo(outbox, num); /* refcnt++ */
+ tmp_msginfo = procmsg_msginfo_get_full_info(msginfo); /* refcnt++ */
if (msginfo != NULL) {
- procmsg_msginfo_unset_flags(msginfo, ~0, 0);
- procmsg_msginfo_free(msginfo);
+ procmsg_msginfo_unset_flags(msginfo, ~0, 0);
+ procmsg_msginfo_free(msginfo); /* refcnt-- */
+ /* tmp_msginfo == msginfo */
+ if (tmp_msginfo && (msginfo->dispositionnotificationto ||
+ msginfo->returnreceiptto)) {
+ procmsg_msginfo_set_flags(msginfo, MSG_RETRCPT_SENT, 0);
+ procmsg_msginfo_free(msginfo); /* refcnt-- */
+ }
}
folder_item_update(outbox, TRUE);
#define MSG_IGNORE_THREAD (1U << 10) /* ignore threads */
#define MSG_LOCKED (1U << 11) /* msg is locked */
-#define MSG_RETRCPT_PENDING (1U << 12) /* return receipt pending */
+#define MSG_RETRCPT_SENT (1U << 12) /* new one */
+
/* RESERVED */
#define MSG_RESERVED_CLAWS (1U << 30) /* for sylpheed-claws */
#define MSG_RESERVED (1U << 31)
#define MSG_IS_REALLY_DELETED(msg) (((msg).perm_flags & MSG_REALLY_DELETED) != 0)
#define MSG_IS_IGNORE_THREAD(msg) (((msg).perm_flags & MSG_IGNORE_THREAD) != 0)
#define MSG_IS_RETRCPT_PENDING(msg) (((msg).perm_flags & MSG_RETRCPT_PENDING) != 0)
+#define MSG_IS_RETRCPT_SENT(msg) (((msg).perm_flags & MSG_RETRCPT_SENT) != 0)
#define MSGINFO_UPDATE_HOOKLIST "msginfo_update"
#define MAIL_FILTERING_HOOKLIST "mail_filtering_hooklist"