[evolution-patches] Fix address field display.



This simplifies the rendering of mail, and has the added benefit that we
no longer lose information when displaying address headers. Observe the
difference between 
	http://www.infradead.org/~dwmw2/evo-losing-to.jpeg
and	http://www.infradead.org/~dwmw2/evo-showing-to.jpeg

Generated with 'diff -w' for ease of reading; of course when I commit it
the whitespace will be correct.
 
Index: mail/ChangeLog
===================================================================
RCS file: /cvs/gnome/evolution/mail/ChangeLog,v
retrieving revision 1.2973
diff -u -p -w -r1.2973 ChangeLog
-- mail/ChangeLog	6 Jan 2004 15:32:16 -0000	1.2973
+++ mail/ChangeLog	6 Jan 2004 17:32:42 -0000
@@ -1,3 +1,9 @@
+2004-01-06  David Woodhouse  <dwmw2 infradead org>
+
+	* em-format-html.c (efh_format_header): Don't attempt to recreate
+	To:, Cc: and similar headers from the addresses which camel happens
+	to know about; display the real content of the mail instead.
+
 2004-01-06  Jeffrey Stedfast  <fejj ximian com>
 
 	* em-message-browser.c (emmb_set_message): Protect against a NULL
Index: mail/em-format-html.c
===================================================================
RCS file: /cvs/gnome/evolution/mail/em-format-html.c,v
retrieving revision 1.20
diff -u -p -w -r1.20 em-format-html.c
-- mail/em-format-html.c	11 Dec 2003 23:47:32 -0000	1.20
+++ mail/em-format-html.c	6 Jan 2004 17:32:42 -0000
@@ -1407,43 +1407,18 @@ efh_format_text_header(EMFormat *emf, Ca
 }
 
 static void
-efh_format_address(EMFormat *emf, CamelStream *stream, const CamelInternetAddress *cia, const char *name, guint32 flags)
-{
-	char *text;
-
-	if (cia == NULL || !camel_internet_address_get(cia, 0, NULL, NULL))
-		return;
-
-	text = camel_address_format((CamelAddress *)cia);
-	efh_format_text_header(emf, stream, name, text, flags | EM_FORMAT_HEADER_BOLD);
-	g_free(text);
-}
-
-static void
 efh_format_header(EMFormat *emf, CamelStream *stream, CamelMedium *part, const char *namein, guint32 flags, const char *charset)
 {
 #define msg ((CamelMimeMessage *)part)
 #define efh ((EMFormatHTML *)emf)
 	char *name;
+	const char *txt, *label;
+	char *value = NULL;
 
 	name = alloca(strlen(namein)+1);
 	strcpy(name, namein);
 	camel_strdown(name);
 
-	if (!strcmp(name, "from"))
-		efh_format_address(emf, stream, camel_mime_message_get_from(msg), _("From"), flags);
-	else if (!strcmp(name, "reply-to"))
-		efh_format_address(emf, stream, camel_mime_message_get_reply_to(msg), _("Reply-To"), flags);
-	else if (!strcmp(name, "to"))
-		efh_format_address(emf, stream, camel_mime_message_get_recipients(msg, CAMEL_RECIPIENT_TYPE_TO), _("To"), flags);
-	else if (!strcmp(name, "cc"))
-		efh_format_address(emf, stream, camel_mime_message_get_recipients(msg, CAMEL_RECIPIENT_TYPE_CC), _("Cc"), flags);
-	else if (!strcmp(name, "bcc"))
-		efh_format_address(emf, stream, camel_mime_message_get_recipients(msg, CAMEL_RECIPIENT_TYPE_BCC), _("Bcc"), flags);
-	else {
-		const char *txt, *label;
-		char *value = NULL;
-
 		if (!strcmp(name, "subject")) {
 			txt = camel_mime_message_get_subject(msg);
 			label = _("Subject");
@@ -1502,12 +1477,29 @@ efh_format_header(EMFormat *emf, CamelSt
 			txt = camel_medium_get_header(part, name);
 			value = camel_header_decode_string (txt, charset);
 			txt = value;
+
+		/* Translate and make bold the common headers */
+		if (!strcmp(name, "from")) {
+			label = _("From");
+			flags |= EM_FORMAT_HEADER_BOLD;
+		} else if (!strcmp(name, "reply-to")) {
+			label = _("Reply-To");
+			flags |= EM_FORMAT_HEADER_BOLD;
+		} else if (!strcmp(name, "to")) {
+			label = _("To");
+			flags |= EM_FORMAT_HEADER_BOLD;
+		} else if (!strcmp(name, "cc")) {
+			label = _("Cc");
+			flags |= EM_FORMAT_HEADER_BOLD;
+		} else if (!strcmp(name, "bcc")) {
+			label = _("Bcc");
+			flags |= EM_FORMAT_HEADER_BOLD;
+		} else 
 			label = namein;
 		}
 
 		efh_format_text_header(emf, stream, label, txt, flags);
 		g_free(value);
-	}
 #undef msg
 #undef efh
 }

-- 
dwmw2




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]