tmp = g_strdup_printf("%s%cqueue.%d", g_get_tmp_dir(),
G_DIR_SEPARATOR, (gint)file);
- if ((fp = fopen(tmp, "w")) == NULL) {
+ if ((fp = fopen(tmp, "wb")) == NULL) {
FILE_OP_ERROR(tmp, "fopen");
g_free(tmp);
return -1;
}
- if ((src_fp = fopen(file, "r")) == NULL) {
+ if ((src_fp = fopen(file, "rb")) == NULL) {
FILE_OP_ERROR(file, "fopen");
fclose(fp);
unlink(tmp);
g_snprintf(tmp, sizeof(tmp), "%s%ctmpmsg%d",
get_rc_dir(), G_DIR_SEPARATOR, (gint)msginfo);
- if ((fp = fopen(tmp, "w")) == NULL) {
+ if ((fp = fopen(tmp, "wb")) == NULL) {
FILE_OP_ERROR(tmp, "fopen");
return -1;
}
if (!mimeinfo) return;
file = procmsg_get_message_file_path(msginfo);
- g_return_if_fail(file != NULL);
+ if (!file) {
+ g_warning("can't get message file path.\n");
+ procmime_mimeinfo_free(mimeinfo);
+ return;
+ }
/* FIXME - doesn't tmpmsginfo->flags have the value
* of msginfo->flags after procheader_parse()???
if (prefs_common.return_receipt
&& (tmpmsginfo->dispositionnotificationto
|| tmpmsginfo->returnreceiptto)
- && (MSG_IS_RETRCPT_PENDING(msginfo->flags))) {
+ && (MSG_IS_UNREAD(tmpmsginfo->flags))
+ && (MSG_IS_RETRCPT_PENDING(tmpmsginfo->flags))) {
gint ok;
if (alertpanel(_("Return Receipt"), _("Send return receipt ?"),
if (ok < 0)
alertpanel_error(_("Error occurred while sending notification."));
}
- MSG_UNSET_PERM_FLAGS(msginfo->flags, MSG_RETRCPT_PENDING);
+ MSG_UNSET_PERM_FLAGS(tmpmsginfo->flags, MSG_RETRCPT_PENDING);
}
headerview_show(messageview->headerview, tmpmsginfo);
procmsg_msginfo_free(tmpmsginfo);
textview_set_all_headers(messageview->textview, all_headers);
+ textview_set_all_headers(messageview->mimeview->textview, all_headers);
- if (mimeinfo->mime_type != MIME_TEXT) {
+ if (mimeinfo->mime_type != MIME_TEXT &&
+ mimeinfo->mime_type != MIME_TEXT_HTML) {
messageview_change_view_type(messageview, MVIEW_MIME);
mimeview_show_message(messageview->mimeview, mimeinfo, file);
} else {
void messageview_copy_clipboard(MessageView *messageview)
{
- switch (messageview->type) {
+ gint displaytype = /* force MVIEV_TEXT on first page */
+ ((messageview->type == MVIEW_MIME)
+ && (gtk_notebook_get_current_page(GTK_NOTEBOOK(
+ messageview->mimeview->notebook)) > 0))
+ ? MVIEW_MIME
+ : MVIEW_TEXT;
+
+ switch (displaytype) {
case MVIEW_TEXT:
gtk_editable_copy_clipboard(GTK_EDITABLE(messageview->textview->text));
break;
void messageview_select_all(MessageView *messageview)
{
- switch (messageview->type) {
- case MVIEW_TEXT:
- gtk_editable_select_region(GTK_EDITABLE(messageview->textview->text), 0, -1);
- break;
- case MVIEW_MIME:
- if (messageview->mimeview->type == MIMEVIEW_TEXT)
- gtk_editable_select_region(GTK_EDITABLE(messageview->mimeview->textview->text), 0, -1);
- default:
- break;
+ GtkWidget *text = NULL;
+
+ if (messageview->type == MVIEW_TEXT)
+ text = messageview->textview->text;
+ else if (messageview->type == MVIEW_MIME) {
+ if (gtk_notebook_get_current_page
+ (GTK_NOTEBOOK(messageview->mimeview->notebook)) == 0)
+ text = messageview->textview->text;
+ else if (messageview->mimeview->type == MIMEVIEW_TEXT)
+ text = messageview->mimeview->textview->text;
}
+
+ if (text)
+ gtk_editable_select_region(GTK_EDITABLE(text), 0, -1);
}
void messageview_set_position(MessageView *messageview, gint pos)
{
- switch (messageview->type) {
- case MVIEW_TEXT:
- textview_set_position(messageview->textview, pos);
- break;
- case MVIEW_MIME:
- if (messageview->mimeview->type == MIMEVIEW_TEXT)
- textview_set_position(messageview->mimeview->textview, pos);
- break;
- default:
- break;
- }
+ textview_set_position(messageview->textview, pos);
}
gboolean messageview_search_string(MessageView *messageview, const gchar *str,
gboolean case_sens)
{
- switch (messageview->type) {
- case MVIEW_TEXT:
- return textview_search_string(messageview->textview,
- str, case_sens);
- case MVIEW_MIME:
- if (messageview->mimeview->type == MIMEVIEW_TEXT)
- return textview_search_string(messageview->mimeview->textview,
- str, case_sens);
- else
- return FALSE;
- default:
- return FALSE;
- }
-
+ return textview_search_string(messageview->textview, str, case_sens);
return FALSE;
}
const gchar *str,
gboolean case_sens)
{
- switch (messageview->type) {
- case MVIEW_TEXT:
- return textview_search_string_backward(messageview->textview,
- str, case_sens);
- case MVIEW_MIME:
- if (messageview->mimeview->type == MIMEVIEW_TEXT)
- return textview_search_string_backward(messageview->mimeview->textview,
- str, case_sens);
- else
- return FALSE;
- default:
- return FALSE;
- }
-
+ return textview_search_string_backward(messageview->textview,
+ str, case_sens);
return FALSE;
-
}
GtkWidget *messageview_get_text_widget(MessageView *messageview)