From 0000d22d8cc113e16fe57fd08fdebe5b1246476f Mon Sep 17 00:00:00 2001 From: Pierre Pronchery Date: Sun, 26 Apr 2015 03:42:11 +0200 Subject: [PATCH] Report errors when printing --- src/editor.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/editor.c b/src/editor.c index ddc9e10..63f6b20 100644 --- a/src/editor.c +++ b/src/editor.c @@ -977,6 +977,8 @@ void editor_paste(Editor * editor) /* editor_print_dialog */ static void _print_dialog_on_begin_print(GtkPrintOperation * operation, GtkPrintContext * context, gpointer data); +static void _print_dialog_on_done(GtkPrintOperation * operation, + GtkPrintOperationResult result, gpointer data); static void _print_dialog_on_draw_page(GtkPrintOperation * operation, GtkPrintContext * context, gint page, gpointer data); static void _print_dialog_on_end_print(GtkPrintOperation * operation, @@ -993,6 +995,8 @@ void editor_print_dialog(Editor * editor) operation = gtk_print_operation_new(); g_signal_connect(operation, "begin-print", G_CALLBACK( _print_dialog_on_begin_print), editor); + g_signal_connect(operation, "done", G_CALLBACK(_print_dialog_on_done), + editor); g_signal_connect(operation, "draw-page", G_CALLBACK( _print_dialog_on_draw_page), editor); g_signal_connect(operation, "end-print", G_CALLBACK( @@ -1026,6 +1030,24 @@ static void _print_dialog_on_begin_print(GtkPrintOperation * operation, editor->font_size * PANGO_SCALE); } +static void _print_dialog_on_done(GtkPrintOperation * operation, + GtkPrintOperationResult result, gpointer data) +{ + Editor * editor = data; + GError * error = NULL; + + switch(result) + { + case GTK_PRINT_OPERATION_RESULT_ERROR: + gtk_print_operation_get_error(operation, &error); + editor_error(editor, error->message, 2); + g_error_free(error); + break; + default: + break; + } +} + static void _print_dialog_on_draw_page(GtkPrintOperation * operation, GtkPrintContext * context, gint page, gpointer data) {