From 3fe6b64c950e97cfdfc5cb1dde2f782bddb85fcf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20K=C3=B6hler?= Date: Sun, 18 Mar 2007 17:58:58 +0000 Subject: [PATCH] Uncouple print settings for reports and checks again. Remove gnc_{save,restore}_print_settings, revert part of r15733. git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@15735 57a11ea4-9604-0410-9ed3-97b8803252fd --- src/gnome-utils/gnc-html.c | 25 ++++++++++++++++++++----- src/gnome-utils/print-session.c | 32 -------------------------------- src/gnome-utils/print-session.h | 17 ----------------- src/gnome/dialog-print-check.c | 17 ++++++++++++++--- 4 files changed, 34 insertions(+), 57 deletions(-) diff --git a/src/gnome-utils/gnc-html.c b/src/gnome-utils/gnc-html.c index eccde30f06..ad7d7733f1 100644 --- a/src/gnome-utils/gnc-html.c +++ b/src/gnome-utils/gnc-html.c @@ -107,6 +107,12 @@ static char error_404_title[] = N_("Not found"); static char error_404_body[] = N_("The specified URL could not be loaded."); +#ifdef GTKHTML_USES_GTKPRINT +static GtkPrintSettings *print_settings = NULL; +G_LOCK_DEFINE_STATIC(print_settings); +#endif + + static char * extract_machine_name(const gchar * path) { @@ -1210,8 +1216,7 @@ gnc_html_export(gnc_html * html, const char *filepath) return TRUE; } -#if GTKHTML_USES_GTKPRINT - +#ifdef GTKHTML_USES_GTKPRINT static void draw_page_cb(GtkPrintOperation *operation, GtkPrintContext *context, gint page_nr, gpointer user_data) @@ -1228,15 +1233,25 @@ gnc_html_print(gnc_html *html) GtkPrintOperationResult res; print = gtk_print_operation_new(); - gnc_restore_print_settings(print); + + G_LOCK(print_settings); + if (print_settings) + gtk_print_operation_set_print_settings(print, print_settings); + G_UNLOCK(print_settings); + gtk_print_operation_set_n_pages(print, 1); g_signal_connect(print, "draw_page", G_CALLBACK(draw_page_cb), html); res = gtk_print_operation_run(print, GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG, GTK_WINDOW(html->window), NULL); - if (res == GTK_PRINT_OPERATION_RESULT_APPLY) - gnc_save_print_settings(print); + if (res == GTK_PRINT_OPERATION_RESULT_APPLY) { + G_LOCK(print_settings); + if (print_settings) + g_object_unref(print_settings); + print_settings = g_object_ref(gtk_print_operation_get_print_settings(print)); + G_UNLOCK(print_settings); + } g_object_unref(print); } diff --git a/src/gnome-utils/print-session.c b/src/gnome-utils/print-session.c index 4e9d513522..43b73a425f 100644 --- a/src/gnome-utils/print-session.c +++ b/src/gnome-utils/print-session.c @@ -105,35 +105,3 @@ gnc_print_session_done(PrintSession * ps) break; } } - -#ifdef HAVE_GTK_2_10 - -static GtkPrintSettings *print_settings = NULL; -G_LOCK_DEFINE_STATIC(print_settings); - -void -gnc_save_print_settings(GtkPrintOperation *print) -{ - g_return_if_fail(print); - - G_LOCK(print_settings); - if (print_settings) - g_object_unref(print_settings); - - print_settings = g_object_ref(gtk_print_operation_get_print_settings(print)); - G_UNLOCK(print_settings); -} - -void -gnc_restore_print_settings(GtkPrintOperation *print) -{ - g_return_if_fail(print); - - G_LOCK(print_settings); - if (print_settings) - gtk_print_operation_set_print_settings(print, print_settings); - - G_UNLOCK(print_settings); -} - -#endif /* HAVE_GTK_2_10 */ diff --git a/src/gnome-utils/print-session.h b/src/gnome-utils/print-session.h index 3d010ac42b..c3afd0da30 100644 --- a/src/gnome-utils/print-session.h +++ b/src/gnome-utils/print-session.h @@ -82,23 +82,6 @@ void gnc_print_session_destroy(PrintSession * ps); */ void gnc_print_session_done(PrintSession * ps); - -#if HAVE_GTK_2_10 -/** Get the print settings of a given GtkPrintOperation and store them in a - * static variable. Previous values will be overwritten. - * - * @param print A pointer to a print operation. - */ -void gnc_save_print_settings(GtkPrintOperation *print); - -/** After a previous call to gnc_save_print_settings, set the print settings of a - * given GtkPrintOperation to the stored value. Otherwise, do nothing. - * - * @param print A pointer to a print operation. - */ -void gnc_restore_print_settings(GtkPrintOperation *print); -#endif - /** @} */ /** @} */ diff --git a/src/gnome/dialog-print-check.c b/src/gnome/dialog-print-check.c index c666f31f25..bc2f072e9e 100644 --- a/src/gnome/dialog-print-check.c +++ b/src/gnome/dialog-print-check.c @@ -110,6 +110,8 @@ typedef enum format_combo_col_t { #if USE_GTKPRINT # define GncPrintContext GtkPrintContext +static GtkPrintSettings *print_settings = NULL; +G_LOCK_DEFINE_STATIC(print_settings); #else # define GncPrintContext GnomePrintContext # define GNOMEPRINT_CLIP_EXTRA 2 @@ -1909,7 +1911,11 @@ gnc_ui_print_check_dialog_ok_cb(PrintCheckDialog * pcd) print = gtk_print_operation_new(); - gnc_restore_print_settings(print); + G_LOCK(print_settings); + if (print_settings) + gtk_print_operation_set_print_settings(print, print_settings); + G_UNLOCK(print_settings); + gtk_print_operation_set_unit(print, GTK_UNIT_POINTS); gtk_print_operation_set_use_full_page(print, TRUE); g_signal_connect(print, "begin_print", G_CALLBACK(begin_print), NULL); @@ -1919,8 +1925,13 @@ gnc_ui_print_check_dialog_ok_cb(PrintCheckDialog * pcd) GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG, pcd->caller_window, NULL); - if (res == GTK_PRINT_OPERATION_RESULT_APPLY) - gnc_save_print_settings(print); + if (res == GTK_PRINT_OPERATION_RESULT_APPLY) { + G_LOCK(print_settings); + if (print_settings) + g_object_unref(print_settings); + print_settings = g_object_ref(gtk_print_operation_get_print_settings(print)); + G_UNLOCK(print_settings); + } g_object_unref(print); }