Recreate GtkPrintOperation every time when printing in wxGTK.

Apparently reusing GtkPrintOperation is not allowed, so create a new one
every time we need it.

Closes #14731.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72642 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2012-10-08 12:09:37 +00:00
parent 9fa99f045e
commit bb03d283be
2 changed files with 9 additions and 3 deletions

View File

@@ -33,6 +33,7 @@
#include "wx/fontutil.h"
#include "wx/dynlib.h"
#include "wx/paper.h"
#include "wx/scopeguard.h"
#include <gtk/gtk.h>
@@ -234,13 +235,12 @@ IMPLEMENT_CLASS(wxGtkPrintNativeData, wxPrintNativeDataBase)
wxGtkPrintNativeData::wxGtkPrintNativeData()
{
m_config = gtk_print_settings_new();
m_job = gtk_print_operation_new();
m_job = NULL;
m_context = NULL;
}
wxGtkPrintNativeData::~wxGtkPrintNativeData()
{
g_object_unref(m_job);
g_object_unref(m_config);
}
@@ -904,7 +904,10 @@ bool wxGtkPrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt )
wxPrintData printdata = GetPrintDialogData().GetPrintData();
wxGtkPrintNativeData *native = (wxGtkPrintNativeData*) printdata.GetNativeData();
GtkPrintOperation * const printOp = native->GetPrintJob();
wxGtkObject<GtkPrintOperation> printOp(gtk_print_operation_new());
native->SetPrintJob(printOp);
wxON_BLOCK_EXIT_OBJ1(*native, wxGtkPrintNativeData::SetPrintJob,
static_cast<GtkPrintOperation*>(NULL));
wxPrinterToGtkData dataToSend;
dataToSend.printer = this;