textview = textview_create();
textview->messageview = messageview;
- mimeview = mimeview_create();
+ mimeview = mimeview_create(mainwin);
mimeview->textview = textview_create();
mimeview->textview->messageview = messageview;
mimeview->messageview = messageview;
void messageview_show(MessageView *messageview, MsgInfo *msginfo,
gboolean all_headers)
{
- FILE *fp;
gchar *file;
MimeInfo *mimeinfo;
g_return_if_fail(msginfo != NULL);
-#if USE_GPGME
- if ((fp = procmsg_open_message_decrypted(msginfo, &mimeinfo)) == NULL)
- return;
-#else /* !USE_GPGME */
- if ((fp = procmsg_open_message(msginfo)) == NULL) return;
- mimeinfo = procmime_scan_mime_header(fp);
-#endif /* USE_GPGME */
- fclose(fp);
- if (!mimeinfo) return;
+ mimeinfo = procmime_scan_message(msginfo);
+ g_return_if_fail(mimeinfo != NULL);
file = procmsg_get_message_file_path(msginfo);
if (!file) {
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 {
for (cur = msgview_list; cur != NULL; cur = cur->next) {
msgview = (MessageView*)cur->data;
toolbar_update(TOOLBAR_MSGVIEW, msgview);
+ mimeview_update(msgview->mimeview);
}
}
procmsg_msginfo_free(messageview->msginfo);
messageview->msginfo = NULL;
messageview_change_view_type(messageview, MVIEW_TEXT);
+ messageview->filtered = FALSE;
headerview_clear(messageview->headerview);
textview_clear(messageview->textview);
noticeview_hide(messageview->noticeview);
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;
return account_find_from_id(account_id);
}
-
/*
- * \brief return selected messageview text used by composing
- * to reply to selected text only
+ * \brief return selected messageview text, when nothing is
+ * selected and message was filtered, return complete text
*
* \param pointer to Messageview
*
*/
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);
- text = gtkut_editable_get_selection
- (GTK_EDITABLE(msgview->textview->text));
-
- if (!text && msgview->type == MVIEW_MIME
- && msgview->mimeview->type == MIMEVIEW_TEXT
- && msgview->mimeview->textview
- && !msgview->mimeview->textview->default_text) {
- text = gtkut_editable_get_selection
- (GTK_EDITABLE(msgview->mimeview->textview->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);
+
+ if (edit->has_selection)
+ text = gtkut_editable_get_selection(edit);
+ else if (msgview->filtered)
+ text = gtk_editable_get_chars (edit, body_pos, -1);
+ else
+ text = NULL;
+
return text;
}