From 23abaeaecd72ee98a8f8491ab893081803dd5dbe Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 5 Jan 2008 18:41:59 +0000 Subject: [PATCH] more fixes to handling of the resolution chosen in GTK print dialog (patch 1864504) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@51023 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/gtk/print.cpp | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/src/gtk/print.cpp b/src/gtk/print.cpp index 27632df797..876888780b 100644 --- a/src/gtk/print.cpp +++ b/src/gtk/print.cpp @@ -261,15 +261,24 @@ bool wxGtkPrintNativeData::TransferTo( wxPrintData &data ) if(!m_config) return false; - GtkPrintQuality quality = gtk_print_settings_get_quality(m_config); - if (quality == GTK_PRINT_QUALITY_HIGH) - data.SetQuality(wxPRINT_QUALITY_HIGH); - else if (quality == GTK_PRINT_QUALITY_LOW) - data.SetQuality(wxPRINT_QUALITY_LOW); - else if (quality == GTK_PRINT_QUALITY_DRAFT) - data.SetQuality(wxPRINT_QUALITY_DRAFT); - else - data.SetQuality(wxPRINT_QUALITY_MEDIUM); + int resolution = gtk_print_settings_get_resolution(m_config); + if ( resolution > 0 ) + { + // if resolution is explicitly set, use it + data.SetQuality(resolution); + } + else // use more vague "quality" + { + GtkPrintQuality quality = gtk_print_settings_get_quality(m_config); + if (quality == GTK_PRINT_QUALITY_HIGH) + data.SetQuality(wxPRINT_QUALITY_HIGH); + else if (quality == GTK_PRINT_QUALITY_LOW) + data.SetQuality(wxPRINT_QUALITY_LOW); + else if (quality == GTK_PRINT_QUALITY_DRAFT) + data.SetQuality(wxPRINT_QUALITY_DRAFT); + else + data.SetQuality(wxPRINT_QUALITY_MEDIUM); + } data.SetNoCopies(gtk_print_settings_get_n_copies(m_config)); @@ -892,6 +901,12 @@ void wxGtkPrinter::BeginPrint(wxPrintout *printout, GtkPrintOperation *operation wxPrintData printdata = GetPrintDialogData().GetPrintData(); wxGtkPrintNativeData *native = (wxGtkPrintNativeData*) printdata.GetNativeData(); + // We need to update printdata with the new data from the dialog and we + // have to do this here because this method needs this new data and we + // cannot update it earlier + native->SetPrintConfig(gtk_print_operation_get_print_settings(operation)); + printdata.ConvertFromNative(); + SetPrintContext(context); native->SetPrintContext( context ); -- 2.45.2