Added this patch to fix. The rationale for the fix is that if the backend of
providing the GTK_PRINT_CAPABILITY_COPIES, then the front end should only
generate a copy of the postscript from cairo surface. If the backend is not
providing this capability, the front end has to do the hardwork of generating
the all the required pages into one file and simply send to the backend.


$ svn diff base-specs/gtk2.spec patches/gtk+-15-handle-copies.diff 
Index: base-specs/gtk2.spec
===================================================================
--- base-specs/gtk2.spec    (revision 20386)
+++ base-specs/gtk2.spec    (working copy)
@@ -50,6 +50,8 @@
 Patch13:       gtk+-13-show-lpr-backend.diff
 # date:2009-10-11 owner:gheet type:bug doo#11830
 Patch14:       gtk+-14-check-libs.diff
+# date:2010-01-07 owner:gheet type:bug doo#13625
+Patch15:       gtk+-15-handle-copies.diff

 BuildRoot:    %{_tmppath}/%{name}-%{version}-build
 Docdir:       %{_defaultdocdir}/doc
@@ -132,6 +134,7 @@
 %patch12 -p1
 %patch13 -p1
 %patch14 -p1
+%patch15 -p1

 %build
 %ifos linux
Index: patches/gtk+-15-handle-copies.diff
===================================================================
--- patches/gtk+-15-handle-copies.diff    (revision 0)
+++ patches/gtk+-15-handle-copies.diff    (revision 0)
@@ -0,0 +1,17 @@
+diff -urN gtk+-2.19.0/gtk/gtkprintoperation-unix.c
../../SUNWgtk2-2.19.0.hacked/i386/gtk+-2.19.0/gtk/gtkprintoperation-unix.c
+--- gtk+-2.19.0/gtk/gtkprintoperation-unix.c    2010-01-07 14:45:55.518849788
+0000
++++
../../SUNWgtk2-2.19.0.hacked/i386/gtk+-2.19.0/gtk/gtkprintoperation-unix.c2010-01-07
14:54:43.597755579 +0000
+@@ -578,7 +578,12 @@
+           priv->page_ranges = job->page_ranges;
+           priv->num_page_ranges = job->num_page_ranges;
+       
+-          priv->manual_num_copies = job->num_copies;
++          if (gtk_printer_get_capabilities (gtk_print_job_get_printer (job))
& 
++                                            GTK_PRINT_CAPABILITY_COPIES)
++            priv->manual_num_copies = 1;
++          else
++            priv->manual_num_copies = job->num_copies;
++
+           priv->manual_collation = job->collate;
+           priv->manual_reverse = job->reverse;
+           priv->manual_page_set = job->page_set;

Reply via email to