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; }