]> www.fi.muni.cz Git - evince.git/commitdiff
Fix for bug Bug 318916: Printing multiple pages.
authorNickolay V. Shmyrev <nshmyrev@src.gnome.org>
Wed, 26 Oct 2005 19:34:23 +0000 (19:34 +0000)
committerNickolay V. Shmyrev <nshmyrev@src.gnome.org>
Wed, 26 Oct 2005 19:34:23 +0000 (19:34 +0000)
* shell/ev-print-job.c: (idle_print_handler):

Fix for bug Bug 318916: Printing multiple pages.

ChangeLog
shell/ev-print-job.c

index d3f32df17fc18c2328a56fffb3fdcccf2211c156..cfd70bbbb82af48e1cf42418bfb31cfa3cac0c23 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2005-10-26  Hubert Figuiere <hfiguiere@teaser.fr>
+
+       * shell/ev-print-job.c: (idle_print_handler):
+       
+       Fix for bug Bug 318916: Printing multiple pages.
+
 2005-10-20  Runa Bhattacharjee  <runa@bengalinux.org>
 
        * configure.ac: Added "bn" (Bengali) to ALL_LINGUAS.
index 955e4bab183b246f5f9b2bd9919f22be07631a3b..bb463f96108d33f57fd1e8522800350832bf18a8 100644 (file)
@@ -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 ();