aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--composer/ChangeLog13
-rw-r--r--composer/e-msg-composer-attachment-bar.c67
-rw-r--r--composer/e-msg-composer.c37
3 files changed, 68 insertions, 49 deletions
diff --git a/composer/ChangeLog b/composer/ChangeLog
index 529a2b800e..678e960a81 100644
--- a/composer/ChangeLog
+++ b/composer/ChangeLog
@@ -1,3 +1,16 @@
+2003-07-16 Jeffrey Stedfast <fejj@ximian.com>
+
+ * e-msg-composer-attachment-bar.c (attach_to_multipart): don't set
+ the rawtext bit anymore.
+
+ * e-msg-composer.c (build_message): Convert the plain part's
+ content stream from UTF-8 to whatever charset we want.
+
+2003-07-16 Jeffrey Stedfast <fejj@ximian.com>
+
+ * e-msg-composer-attachment-bar.c (popup_menu_event): Fix warnings
+ and other breakage introduced by Maxx.
+
2002-07-14 Maxx Cao <maxx.cao@sun.com>
** For bug #45826
diff --git a/composer/e-msg-composer-attachment-bar.c b/composer/e-msg-composer-attachment-bar.c
index e359ffd042..05a1b549f3 100644
--- a/composer/e-msg-composer-attachment-bar.c
+++ b/composer/e-msg-composer-attachment-bar.c
@@ -44,12 +44,12 @@
#include <gal/util/e-iconv.h>
-#include "camel/camel-data-wrapper.h"
-#include "camel/camel-stream-fs.h"
-#include "camel/camel-stream-null.h"
-#include "camel/camel-stream-filter.h"
-#include "camel/camel-mime-filter-bestenc.h"
-#include "camel/camel-mime-part.h"
+#include <camel/camel-data-wrapper.h>
+#include <camel/camel-stream-fs.h>
+#include <camel/camel-stream-null.h>
+#include <camel/camel-stream-filter.h>
+#include <camel/camel-mime-filter-bestenc.h>
+#include <camel/camel-mime-part.h>
#include "e-util/e-gui-utils.h"
@@ -529,30 +529,29 @@ destroy (GtkObject *object)
static void
-popup_menu_placement_callback(GtkMenu *menu, gint *x, gint *y, gboolean *push_in, gpointer user_data)
+popup_menu_placement_callback (GtkMenu *menu, gint *x, gint *y, gboolean *push_in, gpointer user_data)
{
EMsgComposerAttachmentBar *bar;
GnomeIconList *icon_list;
GList *selection;
GnomeCanvasPixbuf *image;
-
+
bar = E_MSG_COMPOSER_ATTACHMENT_BAR (user_data);
icon_list = GNOME_ICON_LIST (user_data);
-
+
gdk_window_get_origin (((GtkWidget*) bar)->window, x, y);
-
+
selection = gnome_icon_list_get_selection (icon_list);
if (selection == NULL)
return;
-
+
image = gnome_icon_list_get_icon_pixbuf_item (icon_list, (gint)selection->data);
if (image == NULL)
return;
-
+
/* Put menu to the center of icon. */
- *x += (gint)(image->item.x1 + image->item.x2)/2;
- *y += (gint)(image->item.y1 + image->item.y2)/2;
-
+ *x += (int)(image->item.x1 + image->item.x2) / 2;
+ *y += (int)(image->item.y1 + image->item.y2) / 2;
}
static gboolean
@@ -561,16 +560,16 @@ popup_menu_event (GtkWidget *widget)
EMsgComposerAttachmentBar *bar = E_MSG_COMPOSER_ATTACHMENT_BAR (widget);
GnomeIconList *icon_list = GNOME_ICON_LIST (widget);
GList *selection = gnome_icon_list_get_selection (icon_list);
- GtkMenu *menu;
-
- if (selection==NULL)
+ GtkWidget *menu;
+
+ if (selection == NULL)
menu = get_context_menu (bar);
else
menu = get_icon_context_menu (bar);
-
+
gnome_popup_menu_do_popup (menu, popup_menu_placement_callback,
- (gpointer)widget, NULL, (gpointer)widget, NULL);
-
+ widget, NULL, widget, NULL);
+
return TRUE;
}
@@ -746,29 +745,22 @@ attach_to_multipart (CamelMultipart *multipart,
if (!CAMEL_IS_MULTIPART (content)) {
if (header_content_type_is (content_type, "text", "*")) {
CamelMimePartEncodingType encoding;
- CamelStreamFilter *filtered_stream;
+ CamelStreamFilter *filter_stream;
CamelMimeFilterBestenc *bestenc;
CamelStream *stream;
const char *charset;
char *type;
- /* assume that if a charset is set, that the content is in UTF-8
- * or else already has rawtext set to TRUE */
- if (!(charset = header_content_type_param (content_type, "charset"))) {
- /* Let camel know that this text part was read in raw and thus is not in
- * UTF-8 format so that when it writes this part out, it doesn't try to
- * convert it from UTF-8 into the @default_charset charset. */
- content->rawtext = TRUE;
- }
+ charset = header_content_type_param (content_type, "charset");
stream = camel_stream_null_new ();
- filtered_stream = camel_stream_filter_new_with_stream (stream);
+ filter_stream = camel_stream_filter_new_with_stream (stream);
bestenc = camel_mime_filter_bestenc_new (CAMEL_BESTENC_GET_ENCODING);
- camel_stream_filter_add (filtered_stream, CAMEL_MIME_FILTER (bestenc));
- camel_object_unref (CAMEL_OBJECT (stream));
+ camel_stream_filter_add (filter_stream, CAMEL_MIME_FILTER (bestenc));
+ camel_object_unref (stream);
- camel_data_wrapper_write_to_stream (content, CAMEL_STREAM (filtered_stream));
- camel_object_unref (CAMEL_OBJECT (filtered_stream));
+ camel_data_wrapper_write_to_stream (content, CAMEL_STREAM (filter_stream));
+ camel_object_unref (filter_stream);
encoding = camel_mime_filter_bestenc_get_best_encoding (bestenc, CAMEL_BESTENC_8BIT);
camel_mime_part_set_encoding (attachment->body, encoding);
@@ -794,10 +786,9 @@ attach_to_multipart (CamelMultipart *multipart,
g_free (type);
}
- camel_object_unref (CAMEL_OBJECT (bestenc));
+ camel_object_unref (bestenc);
} else if (!CAMEL_IS_MIME_MESSAGE (content)) {
- camel_mime_part_set_encoding (attachment->body,
- CAMEL_MIME_PART_ENCODING_BASE64);
+ camel_mime_part_set_encoding (attachment->body, CAMEL_MIME_PART_ENCODING_BASE64);
}
}
diff --git a/composer/e-msg-composer.c b/composer/e-msg-composer.c
index 32b39b88d0..f1e634b809 100644
--- a/composer/e-msg-composer.c
+++ b/composer/e-msg-composer.c
@@ -1,7 +1,7 @@
/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
/* e-msg-composer.c
*
- * Copyright (C) 1999 Ximian, Inc.
+ * Copyright (C) 1999-2003 Ximian, Inc. (www.ximian.com)
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of version 2 of the GNU General Public
@@ -80,9 +80,10 @@
#include "e-util/e-dialog-utils.h"
#include "widgets/misc/e-charset-picker.h"
-#include "camel/camel.h"
-#include "camel/camel-charset-map.h"
-#include "camel/camel-session.h"
+#include <camel/camel-session.h>
+#include <camel/camel-charset-map.h>
+#include <camel/camel-stream-filter.h>
+#include <camel/camel-mime-filter-charset.h>
#include "mail/mail-callbacks.h"
#include "mail/mail-crypto.h"
@@ -345,16 +346,16 @@ build_message (EMsgComposer *composer, gboolean save_html_object_data)
EMsgComposerAttachmentBar *attachment_bar =
E_MSG_COMPOSER_ATTACHMENT_BAR (composer->attachment_bar);
EMsgComposerHdrs *hdrs = E_MSG_COMPOSER_HDRS (composer->hdrs);
- CamelMimeMessage *new;
- GByteArray *data;
CamelDataWrapper *plain, *html, *current;
CamelMimePartEncodingType plain_encoding;
- const char *charset;
+ CamelMultipart *body = NULL;
CamelContentType *type;
+ CamelMimeMessage *new;
+ const char *charset;
CamelStream *stream;
- CamelMultipart *body = NULL;
CamelMimePart *part;
CamelException ex;
+ GByteArray *data;
int i;
if (composer->persist_stream_interface == CORBA_OBJECT_NIL)
@@ -402,11 +403,26 @@ build_message (EMsgComposer *composer, gboolean save_html_object_data)
}
plain = camel_data_wrapper_new ();
- plain->rawtext = FALSE;
- stream = camel_stream_mem_new_with_byte_array (data);
+ /* convert the stream to the appropriate charset */
+ if (charset && strcasecmp (charset, "UTF-8") != 0) {
+ CamelStreamFilter *filter_stream;
+ CamelMimeFilterCharset *filter;
+
+ stream = camel_stream_mem_new_with_byte_array (data);
+ filter_stream = camel_stream_filter_new_with_stream (stream);
+ camel_object_unref (stream);
+
+ stream = (CamelStream *) filter_stream;
+ filter = camel_mime_filter_charset_new_convert ("UTF-8", charset);
+ camel_stream_filter_add (filter_stream, (CamelMimeFilter *) filter);
+ camel_object_unref (filter);
+ }
+
+ /* construct the content object */
camel_data_wrapper_construct_from_stream (plain, stream);
camel_object_unref (stream);
+
camel_data_wrapper_set_mime_type_field (plain, type);
header_content_type_unref (type);
@@ -432,7 +448,6 @@ build_message (EMsgComposer *composer, gboolean save_html_object_data)
}
html = camel_data_wrapper_new ();
- html->rawtext = FALSE;
stream = camel_stream_mem_new_with_byte_array (data);
camel_data_wrapper_construct_from_stream (html, stream);