aboutsummaryrefslogtreecommitdiffstats
path: root/mail/e-mail-printer.c
diff options
context:
space:
mode:
Diffstat (limited to 'mail/e-mail-printer.c')
-rw-r--r--mail/e-mail-printer.c24
1 files changed, 22 insertions, 2 deletions
diff --git a/mail/e-mail-printer.c b/mail/e-mail-printer.c
index 2f7e1366b4..8da529f1b1 100644
--- a/mail/e-mail-printer.c
+++ b/mail/e-mail-printer.c
@@ -198,25 +198,38 @@ emp_start_printing (GObject *object,
}
static void
-emp_run_print_operation (EMailPrinter *emp)
+emp_run_print_operation (EMailPrinter *emp,
+ EMailFormatter *formatter)
{
EMailPartList *part_list;
CamelFolder *folder;
const gchar *message_uid;
+ const gchar *default_charset, *charset;
gchar *mail_uri;
part_list = emp->priv->parts_list;
folder = e_mail_part_list_get_folder (part_list);
message_uid = e_mail_part_list_get_message_uid (part_list);
+ default_charset = formatter ? e_mail_formatter_get_default_charset (formatter) : NULL;
+ charset = formatter ? e_mail_formatter_get_charset (formatter) : NULL;
+
+ if (!default_charset)
+ default_charset = "";
+ if (!charset)
+ charset = "";
mail_uri = e_mail_part_build_uri (
folder, message_uid,
"__evo-load-image", G_TYPE_BOOLEAN, TRUE,
"mode", G_TYPE_INT, E_MAIL_FORMATTER_MODE_PRINTING,
+ "formatter_default_charset", G_TYPE_STRING, default_charset,
+ "formatter_charset", G_TYPE_STRING, charset,
NULL);
/* Print_layout is a special EMPart created by EMFormatHTMLPrint */
if (emp->priv->webview == NULL) {
+ EMailFormatter *emp_formatter;
+
emp->priv->webview = g_object_new (
E_TYPE_MAIL_DISPLAY,
"mode", E_MAIL_FORMATTER_MODE_PRINTING, NULL);
@@ -224,6 +237,12 @@ emp_run_print_operation (EMailPrinter *emp)
e_mail_display_set_force_load_images (
E_MAIL_DISPLAY (emp->priv->webview), TRUE);
+ emp_formatter = e_mail_display_get_formatter (E_MAIL_DISPLAY (emp->priv->webview));
+ if (default_charset && *default_charset)
+ e_mail_formatter_set_default_charset (emp_formatter, default_charset);
+ if (charset && *charset)
+ e_mail_formatter_set_charset (emp_formatter, charset);
+
g_object_ref_sink (emp->priv->webview);
g_signal_connect (
emp->priv->webview, "notify::load-status",
@@ -831,6 +850,7 @@ e_mail_printer_new (EMailPartList *source)
void
e_mail_printer_print (EMailPrinter *emp,
GtkPrintOperationAction action,
+ EMailFormatter *formatter,
GCancellable *cancellable)
{
g_return_if_fail (E_IS_MAIL_PRINTER (emp));
@@ -857,7 +877,7 @@ e_mail_printer_print (EMailPrinter *emp,
cancellable, "cancelled",
G_CALLBACK (gtk_print_operation_cancel), emp->priv->operation);
- emp_run_print_operation (emp);
+ emp_run_print_operation (emp, formatter);
}
const gchar *