From 7af3c68cbf25f00645dc8c455666a51f0afe7cb4 Mon Sep 17 00:00:00 2001 From: Michael Pfeiffer Date: Wed, 22 Jan 2003 06:50:50 +0000 Subject: [PATCH] Return success if print to file dialog has been canceled (so that print_server will delete spool file). git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2528 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../drivers/pdf/source/PrinterDriver.cpp | 21 ++++++++++++------- .../print/drivers/pdf/source/PrinterDriver.h | 1 + 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/add-ons/print/drivers/pdf/source/PrinterDriver.cpp b/src/add-ons/print/drivers/pdf/source/PrinterDriver.cpp index 4e3ad900c3..db4755d103 100644 --- a/src/add-ons/print/drivers/pdf/source/PrinterDriver.cpp +++ b/src/add-ons/print/drivers/pdf/source/PrinterDriver.cpp @@ -122,6 +122,9 @@ PrinterDriver::PrintJob if (OpenTransport() != B_OK) { return B_ERROR; } + if (PrintToFileCanceled()) { + return B_OK; + } // read print file header fJobFile->Seek(0, SEEK_SET); @@ -382,13 +385,6 @@ PrinterDriver::OpenTransport() delete msg; delete path; - - // The BeOS "Print To File" transport returns a non-NULL BDataIO * - // even after user filepanel cancellation! - BFile* file = dynamic_cast(fTransport); - if (file && file->InitCheck() != B_OK) - // Quietly return - return B_ERROR; if (fTransport == 0) { BAlert *alert = new BAlert("Uh oh!", "Couldn't open transport.", "OK"); @@ -400,6 +396,17 @@ PrinterDriver::OpenTransport() } +// -------------------------------------------------- +bool +PrinterDriver::PrintToFileCanceled() +{ + // The BeOS "Print To File" transport returns a non-NULL BDataIO * + // even after user filepanel cancellation! + BFile* file = dynamic_cast(fTransport); + return file && file->InitCheck() != B_OK; +} + + // -------------------------------------------------- status_t PrinterDriver::CloseTransport() diff --git a/src/add-ons/print/drivers/pdf/source/PrinterDriver.h b/src/add-ons/print/drivers/pdf/source/PrinterDriver.h index 178081b29a..3062d65712 100644 --- a/src/add-ons/print/drivers/pdf/source/PrinterDriver.h +++ b/src/add-ons/print/drivers/pdf/source/PrinterDriver.h @@ -86,6 +86,7 @@ public: // transport-related methods status_t OpenTransport(); status_t CloseTransport(); + bool PrintToFileCanceled(); // accessors inline BFile *JobFile() { return fJobFile; }