summaryrefslogtreecommitdiffstats
path: root/printing/printing_context_cairo.cc
diff options
context:
space:
mode:
Diffstat (limited to 'printing/printing_context_cairo.cc')
-rw-r--r--printing/printing_context_cairo.cc35
1 files changed, 15 insertions, 20 deletions
diff --git a/printing/printing_context_cairo.cc b/printing/printing_context_cairo.cc
index 7f31efb..d1c43f1 100644
--- a/printing/printing_context_cairo.cc
+++ b/printing/printing_context_cairo.cc
@@ -6,6 +6,7 @@
#include "base/logging.h"
#include "base/values.h"
+#include "printing/print_dialog_gtk_interface.h"
#include "printing/print_job_constants.h"
#include "printing/print_settings_initializer_gtk.h"
#include "printing/units.h"
@@ -19,22 +20,17 @@
#if !defined(OS_CHROMEOS)
namespace {
- // Function pointer for creating print dialogs.
- static void* (*create_dialog_func_)(
- printing::PrintingContext::PrintSettingsCallback* callback,
+ // Function pointer for creating print dialogs. |callback| is only used when
+ // |show_dialog| is true.
+ static printing::PrintDialogGtkInterface* (*create_dialog_func_)(
printing::PrintingContextCairo* context) = NULL;
- // Function pointer for printing documents.
- static void (*print_document_func_)(
- void* print_dialog,
- const printing::NativeMetafile* metafile,
- const string16& document_name) = NULL;
} // namespace
#endif // !defined(OS_CHROMEOS)
namespace printing {
// static
- PrintingContext* PrintingContext::Create(const std::string& app_locale) {
+PrintingContext* PrintingContext::Create(const std::string& app_locale) {
return static_cast<PrintingContext*>(new PrintingContextCairo(app_locale));
}
@@ -49,28 +45,25 @@ PrintingContextCairo::PrintingContextCairo(const std::string& app_locale)
PrintingContextCairo::~PrintingContextCairo() {
ReleaseContext();
+
+ if (print_dialog_)
+ print_dialog_->ReleaseDialog();
}
#if !defined(OS_CHROMEOS)
// static
-void PrintingContextCairo::SetPrintingFunctions(
- void* (*create_dialog_func)(PrintSettingsCallback* callback,
- PrintingContextCairo* context),
- void (*print_document_func)(void* print_dialog,
- const NativeMetafile* metafile,
- const string16& document_name)) {
+void PrintingContextCairo::SetCreatePrintDialogFunction(
+ PrintDialogGtkInterface* (*create_dialog_func)(
+ PrintingContextCairo* context)) {
DCHECK(create_dialog_func);
- DCHECK(print_document_func);
DCHECK(!create_dialog_func_);
- DCHECK(!print_document_func_);
create_dialog_func_ = create_dialog_func;
- print_document_func_ = print_document_func;
}
void PrintingContextCairo::PrintDocument(const NativeMetafile* metafile) {
DCHECK(print_dialog_);
DCHECK(metafile);
- print_document_func_(print_dialog_, metafile, document_name_);
+ print_dialog_->PrintDocument(metafile, document_name_);
}
#endif // !defined(OS_CHROMEOS)
@@ -82,7 +75,9 @@ void PrintingContextCairo::AskUserForSettings(
#if defined(OS_CHROMEOS)
callback->Run(OK);
#else
- print_dialog_ = create_dialog_func_(callback, this);
+ print_dialog_ = create_dialog_func_(this);
+ print_dialog_->AddRefToDialog();
+ print_dialog_->ShowDialog(callback);
#endif // defined(OS_CHROMEOS)
}