aboutsummaryrefslogtreecommitdiffstats
path: root/em-format
diff options
context:
space:
mode:
authorTomas Popela <tpopela@redhat.com>2013-09-12 21:29:58 +0800
committerTomas Popela <tpopela@redhat.com>2013-09-12 21:29:58 +0800
commit68f27ce0c8a3ed44d1f1105970cc68326df6bad3 (patch)
treecad3537983c28b85223ebb171301df1d8674f5e0 /em-format
parentb3fb5dfc8128fd903e702beeb96eae33de8aa993 (diff)
downloadgsoc2013-evolution-68f27ce0c8a3ed44d1f1105970cc68326df6bad3.tar
gsoc2013-evolution-68f27ce0c8a3ed44d1f1105970cc68326df6bad3.tar.gz
gsoc2013-evolution-68f27ce0c8a3ed44d1f1105970cc68326df6bad3.tar.bz2
gsoc2013-evolution-68f27ce0c8a3ed44d1f1105970cc68326df6bad3.tar.lz
gsoc2013-evolution-68f27ce0c8a3ed44d1f1105970cc68326df6bad3.tar.xz
gsoc2013-evolution-68f27ce0c8a3ed44d1f1105970cc68326df6bad3.tar.zst
gsoc2013-evolution-68f27ce0c8a3ed44d1f1105970cc68326df6bad3.zip
Bug #706008 - Workaround gnome-shell style change on focus change
Avoid redrawing (thus loosing the selection and scroll position) of preview window on style change by defining the colors through CSS styles. On style change we just update the CSS color definitions and preview will update itself without redraw.
Diffstat (limited to 'em-format')
-rw-r--r--em-format/e-mail-formatter-error.c14
-rw-r--r--em-format/e-mail-formatter-headers.c20
-rw-r--r--em-format/e-mail-formatter-message-rfc822.c10
-rw-r--r--em-format/e-mail-formatter-source.c29
-rw-r--r--em-format/e-mail-formatter-text-enriched.c14
-rw-r--r--em-format/e-mail-formatter-text-html.c8
-rw-r--r--em-format/e-mail-formatter-text-plain.c35
-rw-r--r--em-format/e-mail-formatter.c33
-rw-r--r--em-format/e-mail-formatter.h2
9 files changed, 59 insertions, 106 deletions
diff --git a/em-format/e-mail-formatter-error.c b/em-format/e-mail-formatter-error.c
index 8669c11ced..f349283021 100644
--- a/em-format/e-mail-formatter-error.c
+++ b/em-format/e-mail-formatter-error.c
@@ -59,24 +59,14 @@ emfe_error_format (EMailFormatterExtension *extension,
dw = camel_medium_get_content (CAMEL_MEDIUM (mime_part));
html = g_strdup_printf (
- "<div class=\"part-container\" style=\""
- "border-color: #%06x;"
- "background-color: #%06x; color: #%06x;\">"
+ "<div class=\"part-container -e-mail-formatter-frame-color "
+ "-e-mail-formatter-body-color -e-web-view-text-color\">"
"<div class=\"part-container-inner-margin pre\">\n"
"<table border=\"0\" cellspacing=\"10\" "
"cellpadding=\"0\" width=\"100%%\">\n"
"<tr valign=\"top\"><td width=50>"
"<img src=\"gtk-stock://%s/?size=%d\" /></td>\n"
"<td style=\"color: red;\">",
- e_rgba_to_value (
- e_mail_formatter_get_color (
- formatter, E_MAIL_FORMATTER_COLOR_FRAME)),
- e_rgba_to_value (
- e_mail_formatter_get_color (
- formatter, E_MAIL_FORMATTER_COLOR_BODY)),
- e_rgba_to_value (
- e_mail_formatter_get_color (
- formatter, E_MAIL_FORMATTER_COLOR_TEXT)),
GTK_STOCK_DIALOG_ERROR, GTK_ICON_SIZE_DIALOG);
camel_stream_write_string (stream, html, cancellable, NULL);
diff --git a/em-format/e-mail-formatter-headers.c b/em-format/e-mail-formatter-headers.c
index e9f88704c8..3117bec265 100644
--- a/em-format/e-mail-formatter-headers.c
+++ b/em-format/e-mail-formatter-headers.c
@@ -490,9 +490,6 @@ emfe_headers_format (EMailFormatterExtension *extension,
{
CamelMimePart *mime_part;
GString *buffer;
- const GdkRGBA white = { 1.0, 1.0, 1.0, 1.0 };
- const GdkRGBA *body_rgba = &white;
- const GdkRGBA *header_rgba;
const gchar *direction;
gboolean is_collapsable;
gboolean is_collapsed;
@@ -524,22 +521,15 @@ emfe_headers_format (EMailFormatterExtension *extension,
buffer = g_string_new ("");
- if (context->mode != E_MAIL_FORMATTER_MODE_PRINTING)
- body_rgba = e_mail_formatter_get_color (
- formatter, E_MAIL_FORMATTER_COLOR_BODY);
-
- header_rgba = e_mail_formatter_get_color (
- formatter, E_MAIL_FORMATTER_COLOR_HEADER);
-
g_string_append_printf (
buffer,
- "<div class=\"headers\" style=\"background: #%06x;\" id=\"%s\">"
- "<table border=\"0\" width=\"100%%\" "
- "style=\"color: #%06x; direction: %s\">"
+ "%s id=\"%s\"><table class=\"-e-mail-formatter-header-color\" border=\"0\" width=\"100%%\" "
+ "style=\"direction: %s\">"
"<tr>",
- e_rgba_to_value (body_rgba),
+ (context->mode != E_MAIL_FORMATTER_MODE_PRINTING) ?
+ "<div class=\"headers -e-mail-formatter-body-color\"" :
+ "<div class=\"headers\" style=\"background-color: #ffffff;\"",
e_mail_part_get_id (part),
- e_rgba_to_value (header_rgba),
direction);
if (is_collapsable)
diff --git a/em-format/e-mail-formatter-message-rfc822.c b/em-format/e-mail-formatter-message-rfc822.c
index 0477e61517..6b9f4eebb8 100644
--- a/em-format/e-mail-formatter-message-rfc822.c
+++ b/em-format/e-mail-formatter-message-rfc822.c
@@ -221,18 +221,12 @@ emfe_message_rfc822_format (EMailFormatterExtension *extension,
NULL);
str = g_strdup_printf (
- "<div class=\"part-container\" style=\"border-color: #%06x; "
- "background-color: #%06x;\">\n"
+ "<div class=\"part-container -e-mail-formatter-frame-color "
+ "-e-mail-formatter-body-color\">\n"
"<iframe width=\"100%%\" height=\"10\""
" id=\"%s.iframe\" "
" frameborder=\"0\" src=\"%s\" name=\"%s\"></iframe>"
"</div>",
- e_rgba_to_value (
- e_mail_formatter_get_color (
- formatter, E_MAIL_FORMATTER_COLOR_FRAME)),
- e_rgba_to_value (
- e_mail_formatter_get_color (
- formatter, E_MAIL_FORMATTER_COLOR_BODY)),
part_id, uri, part_id);
camel_stream_write_string (stream, str, cancellable, NULL);
diff --git a/em-format/e-mail-formatter-source.c b/em-format/e-mail-formatter-source.c
index 944f9a4c14..12eaa4ab7c 100644
--- a/em-format/e-mail-formatter-source.c
+++ b/em-format/e-mail-formatter-source.c
@@ -70,31 +70,16 @@ emfe_source_format (EMailFormatterExtension *extension,
buffer = g_string_new ("");
if (CAMEL_IS_MIME_MESSAGE (mime_part)) {
- g_string_append_printf (
+ g_string_append (
buffer,
- "<div class=\"part-container\" "
- "style=\"border: 0; background: #%06x; color: #%06x;\" >",
- e_rgba_to_value (
- e_mail_formatter_get_color (
- formatter, E_MAIL_FORMATTER_COLOR_BODY)),
- e_rgba_to_value (
- e_mail_formatter_get_color (
- formatter, E_MAIL_FORMATTER_COLOR_TEXT)));
+ "<div class=\"part-container -e-mail-formatter-body-color "
+ "-e-web-view-text-color\" style=\"border: 0;\" >");
} else {
- g_string_append_printf (
+ g_string_append (
buffer,
- "<div class=\"part-container\" "
- "style=\"border-color: #%06x; background: #%06x; color: #%06x;\">"
- "<div class=\"part-container-inner-margin pre\">\n",
- e_rgba_to_value (
- e_mail_formatter_get_color (
- formatter, E_MAIL_FORMATTER_COLOR_FRAME)),
- e_rgba_to_value (
- e_mail_formatter_get_color (
- formatter, E_MAIL_FORMATTER_COLOR_BODY)),
- e_rgba_to_value (
- e_mail_formatter_get_color (
- formatter, E_MAIL_FORMATTER_COLOR_TEXT)));
+ "<div class=\"part-container -e-mail-formatter-body-color "
+ " -e-web-view-text-color -e-mail-formatter-frame-color\">"
+ "<div class=\"part-container-inner-margin pre\">\n");
}
camel_stream_write_string (
diff --git a/em-format/e-mail-formatter-text-enriched.c b/em-format/e-mail-formatter-text-enriched.c
index 6c3b033171..168522e6b6 100644
--- a/em-format/e-mail-formatter-text-enriched.c
+++ b/em-format/e-mail-formatter-text-enriched.c
@@ -73,17 +73,11 @@ emfe_text_enriched_format (EMailFormatterExtension *extension,
buffer = g_string_new ("");
- g_string_append_printf (
+ g_string_append (
buffer,
- "<div class=\"part-container\" style=\"border-color: #%06x; "
- "background-color: #%06x; color: #%06x;\">"
- "<div class=\"part-container-inner-margin\">\n",
- e_rgba_to_value (
- e_mail_formatter_get_color (formatter, E_MAIL_FORMATTER_COLOR_FRAME)),
- e_rgba_to_value (
- e_mail_formatter_get_color (formatter, E_MAIL_FORMATTER_COLOR_CONTENT)),
- e_rgba_to_value (
- e_mail_formatter_get_color (formatter, E_MAIL_FORMATTER_COLOR_TEXT)));
+ "<div class=\"part-container -e-mail-formatter-frame-color "
+ "-e-web-view-background-color -e-web-view-text-color\">"
+ "<div class=\"part-container-inner-margin\">\n");
camel_stream_write_string (stream, buffer->str, cancellable, NULL);
g_string_free (buffer, TRUE);
diff --git a/em-format/e-mail-formatter-text-html.c b/em-format/e-mail-formatter-text-html.c
index 0a581117a6..17632fa03f 100644
--- a/em-format/e-mail-formatter-text-html.c
+++ b/em-format/e-mail-formatter-text-html.c
@@ -328,15 +328,13 @@ emfe_text_html_format (EMailFormatterExtension *extension,
"<iframe width=\"100%%\" height=\"10\" "
" frameborder=\"0\" src=\"%s\" "
" id=\"%s.iframe\" name=\"%s\" "
- " style=\"border: 1px solid #%06x; background-color: #ffffff;\">"
+ " class=\"-e-mail-formatter-frame-color\" "
+ " style=\"background-color: #ffffff; border: 1px solid;\">"
"</iframe>"
"</div>",
uri,
e_mail_part_get_id (part),
- e_mail_part_get_id (part),
- e_rgba_to_value (
- e_mail_formatter_get_color (
- formatter, E_MAIL_FORMATTER_COLOR_FRAME)));
+ e_mail_part_get_id (part));
camel_stream_write_string (stream, str, cancellable, NULL);
diff --git a/em-format/e-mail-formatter-text-plain.c b/em-format/e-mail-formatter-text-plain.c
index 638f0119a1..487dd34db0 100644
--- a/em-format/e-mail-formatter-text-plain.c
+++ b/em-format/e-mail-formatter-text-plain.c
@@ -70,10 +70,11 @@ emfe_text_plain_format (EMailFormatterExtension *extension,
CamelDataWrapper *dw;
if (context->mode == E_MAIL_FORMATTER_MODE_RAW) {
- gchar *header;
- header = e_mail_formatter_get_html_header (formatter);
- camel_stream_write_string (stream, header, cancellable, NULL);
- g_free (header);
+ camel_stream_write_string (
+ stream,
+ e_mail_formatter_get_sub_html_header (formatter),
+ cancellable,
+ NULL);
/* No need for body margins within <iframe> */
camel_stream_write_string (
@@ -107,16 +108,10 @@ emfe_text_plain_format (EMailFormatterExtension *extension,
CAMEL_STREAM_FILTER (filtered_stream), html_filter);
g_object_unref (html_filter);
- content = g_strdup_printf (
- "<div class=\"part-container pre\" style=\""
- "border: none; padding: 8px; margin: 0; "
- "background-color: #%06x; color: #%06x;\">\n",
- e_rgba_to_value (
- e_mail_formatter_get_color (
- formatter, E_MAIL_FORMATTER_COLOR_CONTENT)),
- e_rgba_to_value (
- e_mail_formatter_get_color (
- formatter, E_MAIL_FORMATTER_COLOR_TEXT)));
+ content = g_strdup (
+ "<div class=\"part-container pre "
+ "-e-web-view-background-color -e-web-view-text-color\" "
+ "style=\"border: none; padding: 8px; margin: 0;\">");
camel_stream_write_string (stream, content, cancellable, NULL);
e_mail_formatter_format_text (formatter, part, filtered_stream, cancellable);
@@ -166,18 +161,14 @@ emfe_text_plain_format (EMailFormatterExtension *extension,
"<iframe width=\"100%%\" height=\"10\""
" id=\"%s.iframe\" name=\"%s\" "
" frameborder=\"0\" src=\"%s\" "
- " style=\"border: 1px solid #%06x; background-color: #%06x;\">"
+ " class=\"-e-mail-formatter-frame-color"
+ " -e-web-view-text-color\" "
+ " style=\"border: 1px solid;\">"
"</iframe>"
"</div>",
e_mail_part_get_id (part),
e_mail_part_get_id (part),
- uri,
- e_rgba_to_value (
- e_mail_formatter_get_color (
- formatter, E_MAIL_FORMATTER_COLOR_FRAME)),
- e_rgba_to_value (
- e_mail_formatter_get_color (
- formatter, E_MAIL_FORMATTER_COLOR_CONTENT)));
+ uri);
camel_stream_write_string (stream, str, cancellable, NULL);
diff --git a/em-format/e-mail-formatter.c b/em-format/e-mail-formatter.c
index f3f09670d4..0cbfaf2e52 100644
--- a/em-format/e-mail-formatter.c
+++ b/em-format/e-mail-formatter.c
@@ -1105,10 +1105,27 @@ e_mail_formatter_format_text (EMailFormatter *formatter,
g_object_unref (mime_part);
}
+const gchar *
+e_mail_formatter_get_sub_html_header (EMailFormatter *formatter)
+{
+ return "<!DOCTYPE HTML>\n"
+ "<html>\n"
+ "<head>\n"
+ "<meta name=\"generator\" content=\"Evolution Mail\"/>\n"
+ "<title>Evolution Mail Display</title>\n"
+ "<link type=\"text/css\" rel=\"stylesheet\" "
+ " href=\"" STYLESHEET_URI "\"/>\n"
+ "<style type=\"text/css\">\n"
+ " table th { font-weight: bold; }\n"
+ "</style>\n"
+ "</head>"
+ "<body class=\"-e-web-view-background-color -e-web-view-text-color\">";
+}
+
gchar *
e_mail_formatter_get_html_header (EMailFormatter *formatter)
{
- return g_strdup_printf (
+ return g_strdup (
"<!DOCTYPE HTML>\n"
"<html>\n"
"<head>\n"
@@ -1117,19 +1134,11 @@ e_mail_formatter_get_html_header (EMailFormatter *formatter)
"<link type=\"text/css\" rel=\"stylesheet\" "
" href=\"" STYLESHEET_URI "\"/>\n"
"<style type=\"text/css\">\n"
- " table th { color: #%06x; font-weight: bold; }\n"
+ " table th { font-weight: bold; }\n"
"</style>\n"
"</head>"
- "<body bgcolor=\"#%06x\" text=\"#%06x\">",
- e_rgba_to_value (
- e_mail_formatter_get_color (
- formatter, E_MAIL_FORMATTER_COLOR_HEADER)),
- e_rgba_to_value (
- e_mail_formatter_get_color (
- formatter, E_MAIL_FORMATTER_COLOR_BODY)),
- e_rgba_to_value (
- e_mail_formatter_get_color (
- formatter, E_MAIL_FORMATTER_COLOR_TEXT)));
+ "<body class=\"-e-mail-formatter-body-color "
+ "-e-web-view-background-color -e-web-view-text-color\">");
}
EMailExtensionRegistry *
diff --git a/em-format/e-mail-formatter.h b/em-format/e-mail-formatter.h
index 9405789b72..5c9d6ff958 100644
--- a/em-format/e-mail-formatter.h
+++ b/em-format/e-mail-formatter.h
@@ -125,6 +125,8 @@ void e_mail_formatter_format_text (EMailFormatter *formatter,
EMailPart *part,
CamelStream *stream,
GCancellable *cancellable);
+const gchar * e_mail_formatter_get_sub_html_header
+ (EMailFormatter *formatter);
gchar * e_mail_formatter_get_html_header
(EMailFormatter *formatter);
EMailExtensionRegistry *