summaryrefslogtreecommitdiff
path: root/sw/source/ui/uiview/viewprt.cxx
diff options
context:
space:
mode:
authorJens-Heiner Rechtien <hr@openoffice.org>2009-12-01 17:50:41 +0000
committerJens-Heiner Rechtien <hr@openoffice.org>2009-12-01 17:50:41 +0000
commit4f0d2859107bc02e3b62fbc2acc42c1af706c7da (patch)
tree83527d821c0c8fe815eb027268e666509bab10ab /sw/source/ui/uiview/viewprt.cxx
parent4a3821a109cb04769de35dee54c10633410015d0 (diff)
parentf71bb16fc284f022a844b575a8db75be7a4aafb1 (diff)
chartshapes: merge with DEV300 m62
Diffstat (limited to 'sw/source/ui/uiview/viewprt.cxx')
-rw-r--r--sw/source/ui/uiview/viewprt.cxx20
1 files changed, 17 insertions, 3 deletions
diff --git a/sw/source/ui/uiview/viewprt.cxx b/sw/source/ui/uiview/viewprt.cxx
index 6d219e71ab30..5e45f9a9a48c 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 );
@@ -431,9 +435,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;
+ }
}