* src/procmsg.[ch]
[claws.git] / src / messageview.c
index a1dfcc1b128fbb9d3eff5f07116e7ff0b9f37a68..b7bc73981e3f37336c217e1a063edb5d1adb868f 100644 (file)
@@ -301,7 +301,7 @@ MessageView *messageview_create(MainWindow *mainwin)
        textview = textview_create();
        textview->messageview = messageview;
 
-       mimeview = mimeview_create();
+       mimeview = mimeview_create(mainwin);
        mimeview->textview = textview_create();
        mimeview->textview->messageview = messageview;
        mimeview->messageview = messageview;
@@ -517,7 +517,7 @@ static gint disposition_notification_queue(PrefsAccount * account,
        }
 
        queue = folder_get_default_queue();
-       if ((num = folder_item_add_msg(queue, tmp, TRUE)) < 0) {
+       if ((num = folder_item_add_msg(queue, tmp, NULL, TRUE)) < 0) {
                g_warning("can't queue the message\n");
                unlink(tmp);
                g_free(tmp);
@@ -701,8 +701,7 @@ void messageview_show(MessageView *messageview, MsgInfo *msginfo,
        textview_set_all_headers(messageview->textview, all_headers);
        textview_set_all_headers(messageview->mimeview->textview, all_headers);
 
-       if (mimeinfo->mime_type != MIME_TEXT &&
-           mimeinfo->mime_type != MIME_TEXT_HTML) {
+       if (mimeinfo->mime_type != MIME_TEXT) {
                messageview_change_view_type(messageview, MVIEW_MIME);
                mimeview_show_message(messageview->mimeview, mimeinfo, file);
        } else {
@@ -711,7 +710,9 @@ void messageview_show(MessageView *messageview, MsgInfo *msginfo,
                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);
@@ -760,6 +761,7 @@ void messageview_reflect_prefs_pixmap_theme(void)
        for (cur = msgview_list; cur != NULL; cur = cur->next) {
                msgview = (MessageView*)cur->data;
                toolbar_update(TOOLBAR_MSGVIEW, msgview);
+               mimeview_update(msgview->mimeview);
        }
 }
 
@@ -805,7 +807,6 @@ void messageview_destroy(MessageView *messageview)
 void messageview_delete(MessageView *msgview)
 {
        MsgInfo *msginfo = (MsgInfo*)msgview->msginfo;
-       SummaryView *summaryview = (SummaryView*)msgview->mainwin->summaryview;
        FolderItem *trash = folder_get_default_trash();
        GSList *msg_list;
 
@@ -1077,7 +1078,7 @@ static void return_receipt_send_clicked(NoticeView *noticeview, MsgInfo *msginfo
        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);
        }               
 
@@ -1128,28 +1129,24 @@ static PrefsAccount *select_account_from_list(GList *ac_list)
  */
 gchar *messageview_get_selection(MessageView *msgview)
 {
+       TextView *textview;
        gchar *text = NULL;
        GtkEditable *edit = NULL;
        gint body_pos = 0;
        
        g_return_val_if_fail(msgview != NULL, NULL);
 
-       if (msgview->type == MVIEW_TEXT) {
-               edit = GTK_EDITABLE(msgview->textview->text);
-               body_pos = msgview->textview->body_pos;
-       }
-       else if (msgview->type == MVIEW_MIME
-                && msgview->mimeview->type == MIMEVIEW_TEXT
-                && msgview->mimeview->textview
-                && !msgview->mimeview->textview->default_text) {
+       textview = messageview_get_current_textview(msgview);
+       if (textview) {
+               edit = GTK_EDITABLE(textview->text);
+               body_pos = textview->body_pos;
+       } else {
                edit = GTK_EDITABLE(msgview->mimeview->textview->text);
                body_pos = msgview->mimeview->textview->body_pos;
        }
 
        g_return_val_if_fail(edit != NULL, NULL);
 
-       printf("filtered: %d\n", msgview->filtered);
-       
        if (edit->has_selection)
                text = gtkut_editable_get_selection(edit);
        else if (msgview->filtered)