From 0d19025d51e4a14ae553a4fc877c04261a11c902 Mon Sep 17 00:00:00 2001 From: "Nickolay V. Shmyrev" Date: Wed, 26 Oct 2005 19:34:23 +0000 Subject: [PATCH] Fix for bug Bug 318916: Printing multiple pages. * shell/ev-print-job.c: (idle_print_handler): Fix for bug Bug 318916: Printing multiple pages. --- ChangeLog | 6 ++++++ shell/ev-print-job.c | 25 +++++++++++++++++++++---- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index d3f32df1..cfd70bbb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2005-10-26 Hubert Figuiere + + * shell/ev-print-job.c: (idle_print_handler): + + Fix for bug Bug 318916: Printing multiple pages. + 2005-10-20 Runa Bhattacharjee * configure.ac: Added "bn" (Bengali) to ALL_LINGUAS. diff --git a/shell/ev-print-job.c b/shell/ev-print-job.c index 955e4bab..bb463f96 100644 --- a/shell/ev-print-job.c +++ b/shell/ev-print-job.c @@ -48,8 +48,8 @@ struct _EvPrintJob { double width; /* FIXME unused */ double height; /* FIXME unused */ gboolean duplex; /* FIXME unused */ - int copies; /* FIXME unused */ - int collate; /* FIXME unsued */ + int copies; + int collate; /* range printing */ int first_page; @@ -60,6 +60,7 @@ struct _EvPrintJob { guint idle_id; gboolean printing; int next_page; + int copies_done; }; struct _EvPrintJobClass { @@ -281,9 +282,25 @@ idle_print_handler (EvPrintJob *job) g_object_unref (rc); - job->next_page++; + if (job->collate) { + /* collate must repeat the same page */ + job->copies_done++; + if(job->copies == job->copies_done) { + job->next_page++; + job->copies_done = 0; + } + } else { + job->next_page++; + if (job->next_page > job->last_page){ + job->copies_done++; + if(job->copies_done < job->copies) { + /* more copies to go, restart to the first page */ + job->next_page = job->first_page; + } + } + } return TRUE; - } else { /* no more pages */ + } else { /* no more pages or copies */ ev_document_doc_mutex_lock (); ev_ps_exporter_end (EV_PS_EXPORTER (job->document)); ev_document_doc_mutex_unlock (); -- 2.43.5