summaryrefslogtreecommitdiff
path: root/svtools/source/dialogs/prnsetup.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'svtools/source/dialogs/prnsetup.cxx')
-rw-r--r--svtools/source/dialogs/prnsetup.cxx37
1 files changed, 25 insertions, 12 deletions
diff --git a/svtools/source/dialogs/prnsetup.cxx b/svtools/source/dialogs/prnsetup.cxx
index 72cff7fc2657..90b44eb856f3 100644
--- a/svtools/source/dialogs/prnsetup.cxx
+++ b/svtools/source/dialogs/prnsetup.cxx
@@ -53,8 +53,9 @@ void ImplFreePrnDlgListBox( ListBox* pBox, bool bClear )
Printer* ImplPrnDlgListBoxSelect( ListBox* pBox, PushButton* pPropBtn,
- Printer* pPrinter, Printer* pTempPrinter )
+ Printer* pPrinter, Printer* pTempPrinterIn )
{
+ VclPtr<Printer> pTempPrinter( pTempPrinterIn );
if ( pBox->GetSelectEntryPos() != LISTBOX_ENTRY_NOTFOUND )
{
const QueueInfo* pInfo = Printer::GetQueueInfo( pBox->GetSelectEntry(), true );
@@ -64,17 +65,17 @@ Printer* ImplPrnDlgListBoxSelect( ListBox* pBox, PushButton* pPropBtn,
{
if ( (pPrinter->GetName() == pInfo->GetPrinterName()) &&
(pPrinter->GetDriverName() == pInfo->GetDriver()) )
- pTempPrinter = new Printer( pPrinter->GetJobSetup() );
+ pTempPrinter = VclPtr<Printer>::Create( pPrinter->GetJobSetup() );
else
- pTempPrinter = new Printer( *pInfo );
+ pTempPrinter = VclPtr<Printer>::Create( *pInfo );
}
else
{
if ( (pTempPrinter->GetName() != pInfo->GetPrinterName()) ||
(pTempPrinter->GetDriverName() != pInfo->GetDriver()) )
{
- delete pTempPrinter;
- pTempPrinter = new Printer( *pInfo );
+ pTempPrinter.disposeAndClear();
+ pTempPrinter = VclPtr<Printer>::Create( *pInfo );
}
}
@@ -91,8 +92,9 @@ Printer* ImplPrnDlgListBoxSelect( ListBox* pBox, PushButton* pPropBtn,
-Printer* ImplPrnDlgUpdatePrinter( Printer* pPrinter, Printer* pTempPrinter )
+Printer* ImplPrnDlgUpdatePrinter( Printer* pPrinter, Printer* pTempPrinterIn )
{
+ VclPtr<Printer> pTempPrinter( pTempPrinterIn );
OUString aPrnName;
if ( pTempPrinter )
aPrnName = pTempPrinter->GetName();
@@ -101,8 +103,7 @@ Printer* ImplPrnDlgUpdatePrinter( Printer* pPrinter, Printer* pTempPrinter )
if ( ! Printer::GetQueueInfo( aPrnName, false ) )
{
- if ( pTempPrinter )
- delete pTempPrinter;
+ pTempPrinter.disposeAndClear();
pTempPrinter = new Printer;
}
@@ -245,11 +246,23 @@ PrinterSetupDialog::PrinterSetupDialog(vcl::Window* pParent)
PrinterSetupDialog::~PrinterSetupDialog()
{
- ImplFreePrnDlgListBox(m_pLbName, false);
- delete mpTempPrinter;
+ disposeOnce();
}
-
+void PrinterSetupDialog::dispose()
+{
+ ImplFreePrnDlgListBox(m_pLbName, false);
+ m_pLbName.clear();
+ m_pBtnProperties.clear();
+ m_pBtnOptions.clear();
+ m_pFiStatus.clear();
+ m_pFiType.clear();
+ m_pFiLocation.clear();
+ m_pFiComment.clear();
+ mpTempPrinter.disposeAndClear();
+ mpPrinter.clear();
+ ModalDialog::dispose();
+}
void PrinterSetupDialog::SetOptionsHdl( const Link& rLink )
{
@@ -293,7 +306,7 @@ IMPL_LINK_NOARG(PrinterSetupDialog, ImplStatusHdl)
IMPL_LINK_NOARG(PrinterSetupDialog, ImplPropertiesHdl)
{
if ( !mpTempPrinter )
- mpTempPrinter = new Printer( mpPrinter->GetJobSetup() );
+ mpTempPrinter = VclPtr<Printer>::Create( mpPrinter->GetJobSetup() );
mpTempPrinter->Setup( this );
return 0;