--- evince-0.6.0/shell/ev-jobs.c 2009-06-10 13:07:16.000000000 +0200 +++ evince-0.6.0/shell/ev-jobs.c 2009-06-10 15:07:30.000000000 +0200 @@ -696,7 +696,7 @@ ev_job_print_run (EvJobPrint *job) continue; } - if (job->collate) + if (!job->collate) n_pages = job->copies; for (j = 0; j < n_pages; j++) { @@ -706,7 +706,7 @@ ev_job_print_run (EvJobPrint *job) page += step; } - if (job->collate) + if (!job->collate) break; } --- evince-0.6.0/shell/ev-window.c 2009-06-09 16:47:15.000000000 +0200 +++ evince-0.6.0/shell/ev-window.c 2009-06-11 14:24:18.000000000 +0200 @@ -1467,6 +1467,16 @@ ev_window_print_job_cb (EvJobPrint *job, g_assert (job->temp_file != NULL); ev_window_print_send (window, job->temp_file); + + if (window->priv->printer && + gtk_printer_is_virtual (window->priv->printer) && + window->priv->print_settings && + job) { + gtk_print_settings_set_n_copies (window->priv->print_settings, job->copies); + gtk_print_settings_set_collate (window->priv->print_settings, job->collate); + gtk_print_settings_set_reverse (window->priv->print_settings, job->reverse); + gtk_print_settings_set_page_set (window->priv->print_settings, (GtkPageSet) job->page_set); + } } static gboolean @@ -1549,7 +1559,6 @@ ev_window_print_dialog_response_cb (GtkD } - page_set = (EvPrintPageSet)gtk_print_settings_get_page_set (window->priv->print_settings); scale = gtk_print_settings_get_scale (window->priv->print_settings) * 0.01; width = gtk_page_setup_get_paper_width (window->priv->print_page_setup, @@ -1562,9 +1571,25 @@ ev_window_print_dialog_response_cb (GtkD height *= scale; } - copies = gtk_print_settings_get_n_copies (window->priv->print_settings); - collate = gtk_print_settings_get_collate (window->priv->print_settings); - reverse = gtk_print_settings_get_reverse (window->priv->print_settings); + if (window->priv->printer && + gtk_printer_is_virtual (window->priv->printer) && + window->priv->print_settings) { + copies = gtk_print_settings_get_n_copies (window->priv->print_settings); + collate = gtk_print_settings_get_collate (window->priv->print_settings); + reverse = gtk_print_settings_get_reverse (window->priv->print_settings); + page_set = (EvPrintPageSet) gtk_print_settings_get_page_set (window->priv->print_settings); + gtk_print_settings_set_n_copies (window->priv->print_settings, 1); + gtk_print_settings_set_collate (window->priv->print_settings, FALSE); + gtk_print_settings_set_reverse (window->priv->print_settings, FALSE); + gtk_print_settings_set_page_set (window->priv->print_settings, GTK_PAGE_SET_ALL); + } + else { + copies = 1; + collate = FALSE; + reverse = FALSE; + page_set = EV_PRINT_PAGE_SET_ALL; + } + window->priv->print_job = ev_job_print_new (window->priv->document, width, height,