void SetPrintConfig( GtkPrintSettings * config );
GtkPrintOperation* GetPrintJob() { return m_job; }
+ void SetPrintJob(GtkPrintOperation *job) { m_job = job; }
GtkPrintContext *GetPrintContext() { return m_context; }
void SetPrintContext(GtkPrintContext *context) {m_context = context; }
void SetPageSetupToSettings(GtkPrintSettings* settings, GtkPageSetup* page_setup);
private:
+ // NB: m_config is created and owned by us, but the other objects are not
+ // and their accessors don't change their ref count.
GtkPrintSettings *m_config;
GtkPrintOperation *m_job;
GtkPrintContext *m_context;
#include "wx/fontutil.h"
#include "wx/dynlib.h"
#include "wx/paper.h"
+#include "wx/scopeguard.h"
#include <gtk/gtk.h>
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);
}
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;