summaryrefslogtreecommitdiff
path: root/sfx2/source/view/printer.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sfx2/source/view/printer.cxx')
-rw-r--r--sfx2/source/view/printer.cxx27
1 files changed, 19 insertions, 8 deletions
diff --git a/sfx2/source/view/printer.cxx b/sfx2/source/view/printer.cxx
index e5de62ccd922..ee07c7850f21 100644
--- a/sfx2/source/view/printer.cxx
+++ b/sfx2/source/view/printer.cxx
@@ -60,7 +60,7 @@ struct SfxPrintOptDlg_Impl
// class SfxPrinter ------------------------------------------------------
-SfxPrinter* SfxPrinter::Create( SvStream& rStream, SfxItemSet* pOptions )
+VclPtr<SfxPrinter> SfxPrinter::Create( SvStream& rStream, SfxItemSet* pOptions )
/* [Description]
@@ -79,7 +79,7 @@ SfxPrinter* SfxPrinter::Create( SvStream& rStream, SfxItemSet* pOptions )
ReadJobSetup( rStream, aFileJobSetup );
// Get printers
- SfxPrinter *pPrinter = new SfxPrinter( pOptions, aFileJobSetup );
+ VclPtr<SfxPrinter> pPrinter = VclPtr<SfxPrinter>::Create( pOptions, aFileJobSetup );
return pPrinter;
}
@@ -166,12 +166,11 @@ SfxPrinter::SfxPrinter( const SfxPrinter& rPrinter ) :
-SfxPrinter* SfxPrinter::Clone() const
+VclPtr<SfxPrinter> SfxPrinter::Clone() const
{
if ( IsDefPrinter() )
{
- SfxPrinter *pNewPrinter;
- pNewPrinter = new SfxPrinter( GetOptions().Clone() );
+ VclPtr<SfxPrinter> pNewPrinter = VclPtr<SfxPrinter>::Create( GetOptions().Clone() );
pNewPrinter->SetJobSetup( GetJobSetup() );
pNewPrinter->SetPrinterProps( this );
pNewPrinter->SetMapMode( GetMapMode() );
@@ -182,15 +181,21 @@ SfxPrinter* SfxPrinter::Clone() const
return pNewPrinter;
}
else
- return new SfxPrinter( *this );
+ return VclPtr<SfxPrinter>::Create( *this );
}
SfxPrinter::~SfxPrinter()
{
+ disposeOnce();
+}
+
+void SfxPrinter::dispose()
+{
delete pOptions;
delete pImpl;
+ Printer::dispose();
}
@@ -215,7 +220,7 @@ SfxPrintOptionsDialog::SfxPrintOptionsDialog(vcl::Window *pParent,
VclContainer *pVBox = get_content_area();
// Insert TabPage
- pPage = pViewSh->CreatePrintOptionsPage(pVBox, *pOptions);
+ pPage.reset(pViewSh->CreatePrintOptionsPage(pVBox, *pOptions));
DBG_ASSERT( pPage, "CreatePrintOptions != SFX_VIEW_HAS_PRINTOPTIONS" );
if( pPage )
{
@@ -229,9 +234,15 @@ SfxPrintOptionsDialog::SfxPrintOptionsDialog(vcl::Window *pParent,
SfxPrintOptionsDialog::~SfxPrintOptionsDialog()
{
+ disposeOnce();
+}
+
+void SfxPrintOptionsDialog::dispose()
+{
delete pDlgImpl;
- delete pPage;
+ pPage.disposeAndClear();
delete pOptions;
+ ModalDialog::dispose();
}