diff options
author | os <os@openoffice.org> | 2009-11-10 15:32:07 +0100 |
---|---|---|
committer | os <os@openoffice.org> | 2009-11-10 15:32:07 +0100 |
commit | e7c62b9e74191e60ab6c64dda6e0ad92a84a729e (patch) | |
tree | 421fad3169e66ac4be5f62605cd96b856d9ec406 /sw/source/ui/uiview/viewprt.cxx | |
parent | b45d1411b305728e9f605779c3deb82a9fd74489 (diff) | |
parent | 1fc7845ffa5ee5842ab650ac7aaab0638fc4b4e4 (diff) |
rebase
Diffstat (limited to 'sw/source/ui/uiview/viewprt.cxx')
-rw-r--r-- | sw/source/ui/uiview/viewprt.cxx | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/sw/source/ui/uiview/viewprt.cxx b/sw/source/ui/uiview/viewprt.cxx index b75c1786f740..fd3782753ca2 100644 --- a/sw/source/ui/uiview/viewprt.cxx +++ b/sw/source/ui/uiview/viewprt.cxx @@ -141,6 +141,10 @@ void SetPrinter( IDocumentDeviceAccess* pIDDA, SfxPrinter* pNew, BOOL bWeb ) USHORT __EXPORT SwView::SetPrinter(SfxPrinter* pNew, USHORT nDiffFlags, bool ) { SwWrtShell &rSh = GetWrtShell(); + SfxPrinter* pOld = rSh.getIDocumentDeviceAccess()->getPrinter( false ); + if ( pOld && pOld->IsPrinting() ) + return SFX_PRINTERROR_BUSY; + if ( (SFX_PRINTER_JOBSETUP | SFX_PRINTER_PRINTER) & nDiffFlags ) { rSh.getIDocumentDeviceAccess()->setPrinter( pNew, true, true ); @@ -434,9 +438,19 @@ ErrCode SwView::DoPrint( SfxPrinter *pPrinter, PrintDialog *pDlg, BOOL bSilent, } pProgress->Stop(); - pProgress->DeleteOnEndPrint(); - pPrinter->EndJob(); - return pPrinter->GetError(); + if ( pPrinter->IsJobActive() ) + { + pProgress->DeleteOnEndPrint(); + pPrinter->EndJob(); + return pPrinter->GetError(); + } + else + { + // the next call might destroy pPrinter (in case it is not the usual document printer); so get the error before + ULONG nError = pPrinter->GetError(); + pProgress->DeleteOnEndPrint(); + return nError; + } } |