[evince/gnome-2-28] [printing] Set page orientation of each page when printing



commit 2fec784bbc737ef20b86a925bca92424eb5261d1
Author: Adrian Johnson <ajohnson redneon com>
Date:   Sat Oct 24 18:44:02 2009 +1030

    [printing] Set page orientation of each page when printing
    
    so that documents with mixed portrait/landscape pages print correctly.
    Fixes bgo#599470.

 shell/ev-print-operation.c |   20 ++++++++++++++++++++
 1 files changed, 20 insertions(+), 0 deletions(-)
---
diff --git a/shell/ev-print-operation.c b/shell/ev-print-operation.c
index 60280b7..92277d0 100644
--- a/shell/ev-print-operation.c
+++ b/shell/ev-print-operation.c
@@ -1643,6 +1643,23 @@ print_job_cancelled (EvJobPrint            *job,
 }
 
 static void
+ev_print_operation_print_request_page_setup (EvPrintOperationPrint *print,
+					     GtkPrintContext       *context,
+					     gint                   page_nr,
+					     GtkPageSetup          *setup)
+{
+	EvPrintOperation *op = EV_PRINT_OPERATION (print);
+	gdouble           width, height;
+
+	ev_document_get_page_size (op->document, page_nr,
+				   &width, &height);
+	if (width > height)
+	        gtk_page_setup_set_orientation (setup, GTK_PAGE_ORIENTATION_LANDSCAPE);
+	else
+	        gtk_page_setup_set_orientation (setup, GTK_PAGE_ORIENTATION_PORTRAIT);
+}
+
+static void
 ev_print_operation_print_draw_page (EvPrintOperationPrint *print,
 				    GtkPrintContext       *context,
 				    gint                   page)
@@ -1730,6 +1747,9 @@ ev_print_operation_print_init (EvPrintOperationPrint *print)
 	g_signal_connect_swapped (print->op, "status_changed",
 				  G_CALLBACK (ev_print_operation_print_status_changed),
 				  print);
+	g_signal_connect_swapped (print->op, "request_page_setup",
+				  G_CALLBACK (ev_print_operation_print_request_page_setup),
+				  print);
 	gtk_print_operation_set_allow_async (print->op, TRUE);
 }
 



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