diff options
author | Milan Crha <mcrha@redhat.com> | 2011-10-21 20:13:01 +0800 |
---|---|---|
committer | Milan Crha <mcrha@redhat.com> | 2011-10-21 20:13:01 +0800 |
commit | c8abdeddfb0bcad2f53dd75d618c462ad3b7ad28 (patch) | |
tree | 371f5872d1fae2bcef78d5f8be7042716d547cb8 | |
parent | 6a21d5af585f51ec2c13b0012e8a157eb4b32e22 (diff) | |
download | gsoc2013-evolution-c8abdeddfb0bcad2f53dd75d618c462ad3b7ad28.tar.gz gsoc2013-evolution-c8abdeddfb0bcad2f53dd75d618c462ad3b7ad28.tar.zst gsoc2013-evolution-c8abdeddfb0bcad2f53dd75d618c462ad3b7ad28.zip |
Bug #660738 - Font changes ignored since 3.2
-rw-r--r-- | e-util/e-util.c | 16 | ||||
-rw-r--r-- | modules/mail/e-mail-config-web-view.c | 35 |
2 files changed, 44 insertions, 7 deletions
diff --git a/e-util/e-util.c b/e-util/e-util.c index 8ededeeb9d..136f8ec485 100644 --- a/e-util/e-util.c +++ b/e-util/e-util.c @@ -1431,9 +1431,19 @@ e_binding_transform_color_to_string (GBinding *binding, g_return_val_if_fail (G_IS_BINDING (binding), FALSE); color = g_value_get_boxed (source_value); - string = gdk_color_to_string (color); - g_value_set_string (target_value, string); - g_free (string); + if (!color) { + g_value_set_string (target_value, ""); + } else { + /* encode color manually, because css styles expect colors in #rrggbb, + not in #rrrrggggbbbb, which is a result of gdk_color_to_string() + */ + string = g_strdup_printf ("#%02x%02x%02x", + (gint) color->red * 256 / 65536, + (gint) color->green * 256 / 65536, + (gint) color->blue * 256 / 65536); + g_value_set_string (target_value, string); + g_free (string); + } return TRUE; } diff --git a/modules/mail/e-mail-config-web-view.c b/modules/mail/e-mail-config-web-view.c index b8a755b46f..d873a54c42 100644 --- a/modules/mail/e-mail-config-web-view.c +++ b/modules/mail/e-mail-config-web-view.c @@ -20,6 +20,9 @@ #include <config.h> #endif +#include <stdio.h> +#include <string.h> + #include "e-mail-config-web-view.h" #include <shell/e-shell.h> @@ -41,6 +44,24 @@ struct _EMailConfigWebViewClass { static gpointer parent_class; +/* replaces content of color string */ +static void +fix_color_string (gchar *color_string) +{ + GdkColor color; + + if (!color_string || strlen (color_string) < 13) + return; + + if (!gdk_color_parse (color_string, &color)) + return; + + sprintf (color_string, "#%02x%02x%02x", + (gint) color.red * 256 / 65536, + (gint) color.green * 256 / 65536, + (gint) color.blue * 256 / 65536); +} + static void mail_config_web_view_load_style (EMailConfigWebView *extension) { @@ -77,13 +98,16 @@ mail_config_web_view_load_style (EMailConfigWebView *extension) buffer = g_string_new ("EWebView {\n"); + fix_color_string (citation_color); + fix_color_string (spell_color); + if (custom_fonts && variable_font != NULL) g_string_append_printf ( buffer, " font: %s;\n", variable_font); if (custom_fonts && monospace_font != NULL) g_string_append_printf ( - buffer, " -GtkHTML-fixed-font-name: %s;\n", + buffer, " -GtkHTML-fixed-font-name: '%s';\n", monospace_font); if (mark_citations && citation_color != NULL) @@ -93,7 +117,7 @@ mail_config_web_view_load_style (EMailConfigWebView *extension) if (spell_color != NULL) g_string_append_printf ( - buffer, " -GtkHTML-spell-error-color: %s\n", + buffer, " -GtkHTML-spell-error-color: %s;\n", spell_color); g_string_append (buffer, "}\n"); @@ -112,6 +136,9 @@ mail_config_web_view_load_style (EMailConfigWebView *extension) g_free (variable_font); g_free (citation_color); g_free (spell_color); + + gtk_style_context_invalidate ( + gtk_widget_get_style_context (GTK_WIDGET (e_extension_get_extensible (E_EXTENSION (extension))))); } static void @@ -142,13 +169,13 @@ mail_config_web_view_realize (GtkWidget *widget, widget, "magic-smileys", G_BINDING_SYNC_CREATE); - mail_config_web_view_load_style (extension); - gtk_style_context_add_provider ( gtk_widget_get_style_context (widget), GTK_STYLE_PROVIDER (extension->css_provider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); + mail_config_web_view_load_style (extension); + /* Reload the style sheet when certain settings change. */ g_signal_connect_swapped ( |