projects
/
pspp-builds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
gui: Fix behavior of print preview in psppire-output-window.
[pspp-builds.git]
/
src
/
ui
/
gui
/
psppire-output-window.c
diff --git
a/src/ui/gui/psppire-output-window.c
b/src/ui/gui/psppire-output-window.c
index 9d2c73f85e8d4e1092c1a15a28a7a919b09e7300..8c8f0768b7eb3354ba08f793b59f77519501ac44 100644
(file)
--- a/
src/ui/gui/psppire-output-window.c
+++ b/
src/ui/gui/psppire-output-window.c
@@
-999,7
+999,13
@@
paginate (GtkPrintOperation *operation,
GtkPrintContext *context,
PsppireOutputWindow *window)
{
GtkPrintContext *context,
PsppireOutputWindow *window)
{
- if ( window->print_item < window->n_items )
+ if (window->paginated)
+ {
+ /* Sometimes GTK+ emits this signal again even after pagination is
+ complete. Don't let that screw up printing. */
+ return TRUE;
+ }
+ else if ( window->print_item < window->n_items )
{
xr_driver_output_item (window->print_xrd, window->items[window->print_item++]);
while (xr_driver_need_new_page (window->print_xrd))
{
xr_driver_output_item (window->print_xrd, window->items[window->print_item++]);
while (xr_driver_need_new_page (window->print_xrd))
@@
-1012,8
+1018,13
@@
paginate (GtkPrintOperation *operation,
else
{
gtk_print_operation_set_n_pages (operation, window->print_n_pages);
else
{
gtk_print_operation_set_n_pages (operation, window->print_n_pages);
- window->print_item = 0;
+
+ /* Re-create the driver to do the real printing. */
+ xr_driver_destroy (window->print_xrd);
create_xr_print_driver (context, window);
create_xr_print_driver (context, window);
+ window->print_item = 0;
+ window->paginated = TRUE;
+
return TRUE;
}
}
return TRUE;
}
}
@@
-1027,6
+1038,7
@@
begin_print (GtkPrintOperation *operation,
window->print_item = 0;
window->print_n_pages = 1;
window->print_item = 0;
window->print_n_pages = 1;
+ window->paginated = FALSE;
}
static void
}
static void