summaryrefslogtreecommitdiff
path: root/sfx2/source/view
diff options
context:
space:
mode:
Diffstat (limited to 'sfx2/source/view')
-rw-r--r--sfx2/source/view/frame.cxx2
-rw-r--r--sfx2/source/view/frame2.cxx9
-rw-r--r--sfx2/source/view/impframe.hxx14
-rw-r--r--sfx2/source/view/impviewframe.hxx4
-rw-r--r--sfx2/source/view/printer.cxx27
-rw-r--r--sfx2/source/view/sfxbasecontroller.cxx2
-rw-r--r--sfx2/source/view/viewfrm.cxx20
-rw-r--r--sfx2/source/view/viewprn.cxx57
-rw-r--r--sfx2/source/view/viewsh.cxx12
9 files changed, 76 insertions, 71 deletions
diff --git a/sfx2/source/view/frame.cxx b/sfx2/source/view/frame.cxx
index 82c03818579b..c830ff577a17 100644
--- a/sfx2/source/view/frame.cxx
+++ b/sfx2/source/view/frame.cxx
@@ -93,7 +93,7 @@ void SfxFrame::Construct_Impl()
SfxFrame::~SfxFrame()
{
RemoveTopFrame_Impl( this );
- DELETEZ( pWindow );
+ pWindow.disposeAndClear();
SfxFrameArr_Impl::iterator it = std::find( pFramesArr_Impl->begin(), pFramesArr_Impl->end(), this );
if ( it != pFramesArr_Impl->end() )
diff --git a/sfx2/source/view/frame2.cxx b/sfx2/source/view/frame2.cxx
index 037d7ea525ae..390a9c52d241 100644
--- a/sfx2/source/view/frame2.cxx
+++ b/sfx2/source/view/frame2.cxx
@@ -69,7 +69,6 @@ public:
SfxFrame* pFrame;
SfxFrameWindow_Impl( SfxFrame* pF, vcl::Window& i_rContainerWindow );
- virtual ~SfxFrameWindow_Impl( );
virtual void DataChanged( const DataChangedEvent& rDCEvt ) SAL_OVERRIDE;
virtual void StateChanged( StateChangedType nStateChange ) SAL_OVERRIDE;
@@ -86,10 +85,6 @@ SfxFrameWindow_Impl::SfxFrameWindow_Impl( SfxFrame* pF, vcl::Window& i_rContaine
{
}
-SfxFrameWindow_Impl::~SfxFrameWindow_Impl( )
-{
-}
-
void SfxFrameWindow_Impl::DataChanged( const DataChangedEvent& rDCEvt )
{
Window::DataChanged( rDCEvt );
@@ -309,7 +304,7 @@ SfxFrame::SfxFrame( vcl::Window& i_rContainerWindow, bool i_bHidden )
InsertTopFrame_Impl( this );
pImp->pExternalContainerWindow = &i_rContainerWindow;
- pWindow = new SfxFrameWindow_Impl( this, i_rContainerWindow );
+ pWindow = VclPtr<SfxFrameWindow_Impl>::Create( this, i_rContainerWindow );
// always show pWindow, which is the ComponentWindow of the XFrame we live in
// nowadays, since SfxFrames can be created with an XFrame only, hiding or showing the complete XFrame
@@ -350,7 +345,7 @@ SystemWindow* SfxFrame::GetSystemWindow() const
SystemWindow* SfxFrame::GetTopWindow_Impl() const
{
if ( pImp->pExternalContainerWindow->IsSystemWindow() )
- return static_cast<SystemWindow*>( pImp->pExternalContainerWindow );
+ return static_cast<SystemWindow*>( pImp->pExternalContainerWindow.get() );
else
return NULL;
}
diff --git a/sfx2/source/view/impframe.hxx b/sfx2/source/view/impframe.hxx
index 5f1aaae8e4fc..271ef70c1d45 100644
--- a/sfx2/source/view/impframe.hxx
+++ b/sfx2/source/view/impframe.hxx
@@ -41,17 +41,17 @@ public:
SfxViewFrame* pCurrentViewFrame;
SfxFrameDescriptor* pDescr;
sal_uInt16 nLocks;
- bool bClosing : 1;
- bool bPrepClosing : 1;
- bool bInCancelTransfers : 1;
- bool bOwnsBindings : 1;
- bool bReleasingComponent : 1;
- bool bInPlace : 1;
+ bool bClosing : 1;
+ bool bPrepClosing : 1;
+ bool bInCancelTransfers : 1;
+ bool bOwnsBindings : 1;
+ bool bReleasingComponent : 1;
+ bool bInPlace : 1;
SfxFrame* pFrame;
SfxWorkWindow* pWorkWin;
SvBorder aBorder;
// formerly SfxTopFrame
- vcl::Window* pExternalContainerWindow;
+ VclPtr<vcl::Window> pExternalContainerWindow;
bool bHidden;
bool bLockResize;
bool bMenuBarOn;
diff --git a/sfx2/source/view/impviewframe.hxx b/sfx2/source/view/impviewframe.hxx
index 129d03c5e8ce..0f8bfdc47f85 100644
--- a/sfx2/source/view/impviewframe.hxx
+++ b/sfx2/source/view/impviewframe.hxx
@@ -35,9 +35,9 @@ struct SfxViewFrame_Impl
OUString aActualURL;
SfxFrame& rFrame;
svtools::AsynchronLink* pReloader;
- vcl::Window* pWindow;
+ VclPtr<vcl::Window> pWindow;
SfxViewFrame* pActiveChild;
- vcl::Window* pFocusWin;
+ VclPtr<vcl::Window> pFocusWin;
sal_uInt16 nDocViewNo;
sal_uInt16 nCurViewId;
bool bResizeInToOut:1;
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();
}
diff --git a/sfx2/source/view/sfxbasecontroller.cxx b/sfx2/source/view/sfxbasecontroller.cxx
index e56ac06d7abd..22d283b9553c 100644
--- a/sfx2/source/view/sfxbasecontroller.cxx
+++ b/sfx2/source/view/sfxbasecontroller.cxx
@@ -1451,7 +1451,7 @@ void SfxBaseController::ShowInfoBars( )
SfxInfoBarWindow* pInfoBar = pViewFrame->AppendInfoBar( "checkout", SfxResId( STR_NONCHECKEDOUT_DOCUMENT ) );
if (pInfoBar)
{
- PushButton* pBtn = new PushButton( &pViewFrame->GetWindow(), SfxResId( BT_CHECKOUT ) );
+ VclPtrInstance<PushButton> pBtn( &pViewFrame->GetWindow(), SfxResId( BT_CHECKOUT ) );
pBtn->SetClickHdl( LINK( this, SfxBaseController, CheckOutHandler ) );
pInfoBar->addButton(pBtn);
}
diff --git a/sfx2/source/view/viewfrm.cxx b/sfx2/source/view/viewfrm.cxx
index 8bccea79f647..cfae5c1232e2 100644
--- a/sfx2/source/view/viewfrm.cxx
+++ b/sfx2/source/view/viewfrm.cxx
@@ -495,9 +495,9 @@ void SfxViewFrame::ExecReload_Impl( SfxRequest& rReq )
if ( nOpenMode == SFX_STREAM_READWRITE && !rReq.IsAPI() )
{
// ::com::sun::star::sdbcx::User offering to open it as a template
- MessageDialog aBox(&GetWindow(), SfxResId(STR_QUERY_OPENASTEMPLATE),
+ ScopedVclPtrInstance<MessageDialog> aBox(&GetWindow(), SfxResId(STR_QUERY_OPENASTEMPLATE),
VCL_MESSAGE_QUESTION, VCL_BUTTONS_YES_NO);
- if ( RET_YES == aBox.Execute() )
+ if ( RET_YES == aBox->Execute() )
{
SfxApplication* pApp = SfxGetpApp();
SfxAllItemSet aSet( pApp->GetPool() );
@@ -579,9 +579,9 @@ void SfxViewFrame::ExecReload_Impl( SfxRequest& rReq )
if ( bDo && GetFrame().DocIsModified_Impl() &&
!rReq.IsAPI() && ( !pSilentItem || !pSilentItem->GetValue() ) )
{
- MessageDialog aBox(&GetWindow(), SfxResId(STR_QUERY_LASTVERSION),
+ ScopedVclPtrInstance<MessageDialog> aBox(&GetWindow(), SfxResId(STR_QUERY_LASTVERSION),
VCL_MESSAGE_QUESTION, VCL_BUTTONS_YES_NO);
- bDo = ( RET_YES == aBox.Execute() );
+ bDo = ( RET_YES == aBox->Execute() );
}
if ( bDo )
@@ -756,9 +756,9 @@ void SfxViewFrame::ExecReload_Impl( SfxRequest& rReq )
if ( bForEdit && SID_EDITDOC == rReq.GetSlot() )
{
// ask user for opening as template
- MessageDialog aBox(&GetWindow(), SfxResId(STR_QUERY_OPENASTEMPLATE),
+ ScopedVclPtrInstance<MessageDialog> aBox(&GetWindow(), SfxResId(STR_QUERY_OPENASTEMPLATE),
VCL_MESSAGE_QUESTION, VCL_BUTTONS_YES_NO);
- if ( RET_YES == aBox.Execute() )
+ if ( RET_YES == aBox->Execute() )
{
SfxAllItemSet aSet( pApp->GetPool() );
aSet.Put( SfxStringItem( SID_FILE_NAME, pMedium->GetName() ) );
@@ -1369,7 +1369,7 @@ void SfxViewFrame::Notify( SfxBroadcaster& /*rBC*/, const SfxHint& rHint )
SfxInfoBarWindow* pInfoBar = AppendInfoBar("readonly", SfxResId(STR_READONLY_DOCUMENT));
if (pInfoBar)
{
- PushButton* pBtn = new PushButton( &GetWindow(), SfxResId(BT_READONLY_EDIT));
+ VclPtrInstance<PushButton> pBtn( &GetWindow(), SfxResId(BT_READONLY_EDIT));
pBtn->SetClickHdl(LINK(this, SfxViewFrame, SwitchReadOnlyHandler));
pInfoBar->addButton(pBtn);
}
@@ -1468,7 +1468,7 @@ SfxViewFrame::SfxViewFrame
rFrame.SetFrameType_Impl( GetFrameType() | SFXFRAME_HASTITLE );
Construct_Impl( pObjShell );
- pImp->pWindow = new SfxFrameViewWindow_Impl( this, rFrame.GetWindow() );
+ pImp->pWindow = VclPtr<SfxFrameViewWindow_Impl>::Create( this, rFrame.GetWindow() );
pImp->pWindow->SetSizePixel( rFrame.GetWindow().GetOutputSizePixel() );
rFrame.SetOwnsBindings_Impl( true );
rFrame.CreateWorkWindow_Impl();
@@ -1477,7 +1477,6 @@ SfxViewFrame::SfxViewFrame
SfxViewFrame::~SfxViewFrame()
{
-
SetDowning_Impl();
if ( SfxViewFrame::Current() == this )
@@ -1489,7 +1488,8 @@ SfxViewFrame::~SfxViewFrame()
// The Bindings delete the Frame!
KillDispatcher_Impl();
- delete pImp->pWindow;
+ pImp->pWindow.disposeAndClear();
+ pImp->pFocusWin.clear();
if ( GetFrame().GetCurrentViewFrame() == this )
GetFrame().SetCurrentViewFrame_Impl( NULL );
diff --git a/sfx2/source/view/viewprn.cxx b/sfx2/source/view/viewprn.cxx
index 5d46afde66f3..d478a4a847d2 100644
--- a/sfx2/source/view/viewprn.cxx
+++ b/sfx2/source/view/viewprn.cxx
@@ -59,7 +59,7 @@ class SfxPrinterController : public vcl::PrinterController, public SfxListener
Any maCompleteSelection;
Any maSelection;
Reference< view::XRenderable > mxRenderable;
- mutable Printer* mpLastPrinter;
+ mutable VclPtr<Printer> mpLastPrinter;
mutable Reference<awt::XDevice> mxDevice;
SfxViewShell* mpViewShell;
SfxObjectShell* mpObjectShell;
@@ -74,7 +74,7 @@ class SfxPrinterController : public vcl::PrinterController, public SfxListener
const Any& getSelectionObject() const;
public:
- SfxPrinterController( const std::shared_ptr<Printer>& i_rPrinter,
+ SfxPrinterController( const VclPtr<Printer>& i_rPrinter,
const Any& i_rComplete,
const Any& i_rSelection,
const Any& i_rViewProp,
@@ -94,7 +94,7 @@ public:
virtual void jobFinished( com::sun::star::view::PrintableState ) SAL_OVERRIDE;
};
-SfxPrinterController::SfxPrinterController( const std::shared_ptr<Printer>& i_rPrinter,
+SfxPrinterController::SfxPrinterController( const VclPtr<Printer>& i_rPrinter,
const Any& i_rComplete,
const Any& i_rSelection,
const Any& i_rViewProp,
@@ -204,8 +204,8 @@ const Any& SfxPrinterController::getSelectionObject() const
Sequence< beans::PropertyValue > SfxPrinterController::getMergedOptions() const
{
- std::shared_ptr<Printer> xPrinter(getPrinter());
- if (xPrinter.get() != mpLastPrinter)
+ VclPtr<Printer> xPrinter( getPrinter() );
+ if( xPrinter.get() != mpLastPrinter )
{
mpLastPrinter = xPrinter.get();
VCLXDevice* pXDevice = new VCLXDevice();
@@ -224,8 +224,8 @@ Sequence< beans::PropertyValue > SfxPrinterController::getMergedOptions() const
int SfxPrinterController::getPageCount() const
{
int nPages = 0;
- std::shared_ptr<Printer> xPrinter(getPrinter());
- if (mxRenderable.is() && xPrinter)
+ VclPtr<Printer> xPrinter( getPrinter() );
+ if( mxRenderable.is() && xPrinter )
{
Sequence< beans::PropertyValue > aJobOptions( getMergedOptions() );
try
@@ -244,7 +244,7 @@ int SfxPrinterController::getPageCount() const
Sequence< beans::PropertyValue > SfxPrinterController::getPageParameters( int i_nPage ) const
{
- std::shared_ptr<Printer> xPrinter(getPrinter());
+ VclPtr<Printer> xPrinter( getPrinter() );
Sequence< beans::PropertyValue > aResult;
if (mxRenderable.is() && xPrinter)
@@ -269,8 +269,8 @@ Sequence< beans::PropertyValue > SfxPrinterController::getPageParameters( int i_
void SfxPrinterController::printPage( int i_nPage ) const
{
- std::shared_ptr<Printer> xPrinter(getPrinter());
- if (mxRenderable.is() && xPrinter)
+ VclPtr<Printer> xPrinter( getPrinter() );
+ if( mxRenderable.is() && xPrinter )
{
Sequence< beans::PropertyValue > aJobOptions( getMergedOptions() );
try
@@ -384,7 +384,7 @@ void SfxPrinterController::jobFinished( com::sun::star::view::PrintableState nSt
pDocPrt->SetJobSetup( getPrinter()->GetJobSetup() );
else
{
- SfxPrinter* pNewPrt = new SfxPrinter( pDocPrt->GetOptions().Clone(), getPrinter()->GetName() );
+ VclPtr<SfxPrinter> pNewPrt = VclPtr<SfxPrinter>::Create( pDocPrt->GetOptions().Clone(), getPrinter()->GetName() );
pNewPrt->SetJobSetup( getPrinter()->GetJobSetup() );
mpViewShell->SetPrinter( pNewPrt, SfxPrinterChangeFlags::PRINTER | SfxPrinterChangeFlags::JOBSETUP );
}
@@ -411,9 +411,9 @@ class SfxDialogExecutor_Impl
{
private:
SfxViewShell* _pViewSh;
- PrinterSetupDialog* _pSetupParent;
+ VclPtr<PrinterSetupDialog> _pSetupParent;
SfxItemSet* _pOptions;
- bool _bHelpDisabled;
+ bool _bHelpDisabled;
DECL_LINK( Execute, void * );
@@ -451,8 +451,8 @@ IMPL_LINK_NOARG(SfxDialogExecutor_Impl, Execute)
return 0;
// Create Dialog
- boost::scoped_ptr<SfxPrintOptionsDialog> pDlg(new SfxPrintOptionsDialog( static_cast<vcl::Window*>(_pSetupParent),
- _pViewSh, _pOptions ));
+ VclPtrInstance<SfxPrintOptionsDialog> pDlg( static_cast<vcl::Window*>(_pSetupParent),
+ _pViewSh, _pOptions );
if ( _bHelpDisabled )
pDlg->DisableHelp();
if ( pDlg->Execute() == RET_OK )
@@ -469,7 +469,7 @@ IMPL_LINK_NOARG(SfxDialogExecutor_Impl, Execute)
Internal method for setting the differences between 'pNewPrinter' to the
current printer. pNewPrinter is either taken over or deleted.
*/
-SfxPrinter* SfxViewShell::SetPrinter_Impl( SfxPrinter *pNewPrinter )
+SfxPrinter* SfxViewShell::SetPrinter_Impl( VclPtr<SfxPrinter>& pNewPrinter )
{
// get current Printer
SfxPrinter *pDocPrinter = GetPrinter();
@@ -558,7 +558,7 @@ SfxPrinter* SfxViewShell::SetPrinter_Impl( SfxPrinter *pNewPrinter )
// Keep old changed Printer.
pDocPrinter->SetPrinterProps( pNewPrinter );
- delete pNewPrinter;
+ pNewPrinter.disposeAndClear();
}
if ( SfxPrinterChangeFlags::NONE != nChangedFlags )
@@ -582,7 +582,7 @@ void SfxViewShell::StartPrint( const uno::Sequence < beans::PropertyValue >& rPr
aSelection <<= GetObjectShell()->GetModel();
Any aComplete( makeAny( GetObjectShell()->GetModel() ) );
Any aViewProp( makeAny( xController ) );
- std::shared_ptr<Printer> aPrt;
+ VclPtr<Printer> aPrt;
const beans::PropertyValue* pVal = rProps.getConstArray();
for( sal_Int32 i = 0; i < rProps.getLength(); i++ )
@@ -591,7 +591,7 @@ void SfxViewShell::StartPrint( const uno::Sequence < beans::PropertyValue >& rPr
{
OUString aPrinterName;
pVal[i].Value >>= aPrinterName;
- aPrt.reset( new Printer( aPrinterName ) );
+ aPrt.reset( VclPtr<Printer>::Create( aPrinterName ) );
break;
}
}
@@ -637,7 +637,7 @@ Printer* SfxViewShell::GetActivePrinter() const
void SfxViewShell::ExecPrint_Impl( SfxRequest &rReq )
{
sal_uInt16 nDialogRet = RET_CANCEL;
- SfxPrinter* pPrinter = 0;
+ VclPtr<SfxPrinter> pPrinter;
bool bSilent = false;
// does the function have been called by the user interface or by an API call
@@ -770,11 +770,11 @@ void SfxViewShell::ExecPrint_Impl( SfxRequest &rReq )
if ( pPrinterItem )
{
// use PrinterName parameter to create a printer
- pPrinter = new SfxPrinter( pDocPrinter->GetOptions().Clone(), ((const SfxStringItem*) pPrinterItem)->GetValue() );
+ pPrinter = VclPtr<SfxPrinter>::Create( pDocPrinter->GetOptions().Clone(), ((const SfxStringItem*) pPrinterItem)->GetValue() );
// if printer is unknown, it can't be used - now printer from document will be used
if ( !pPrinter->IsKnown() )
- DELETEZ(pPrinter);
+ pPrinter.disposeAndClear();
}
if ( SID_PRINTER_NAME == nId )
@@ -816,11 +816,11 @@ void SfxViewShell::ExecPrint_Impl( SfxRequest &rReq )
if ( !bIsAPI )
{
// PrinterDialog needs a temporary printer
- SfxPrinter* pDlgPrinter = pPrinter->Clone();
+ VclPtr<SfxPrinter> pDlgPrinter = pPrinter->Clone();
nDialogRet = 0;
// execute PrinterSetupDialog
- PrinterSetupDialog* pPrintSetupDlg = new PrinterSetupDialog( GetWindow() );
+ VclPtrInstance<PrinterSetupDialog> pPrintSetupDlg( GetWindow() );
SfxDialogExecutor_Impl* pExecutor = 0;
if (pImp->m_bHasPrintOptions && HasPrintOptionsPage())
@@ -847,7 +847,7 @@ void SfxViewShell::ExecPrint_Impl( SfxRequest &rReq )
}
}
- DELETEZ( pPrintSetupDlg );
+ pPrintSetupDlg.disposeAndClear();
delete pExecutor;
// no recording of PrinterSetup except printer name (is printer dependent)
@@ -868,13 +868,12 @@ void SfxViewShell::ExecPrint_Impl( SfxRequest &rReq )
// forget new printer, it was taken over (as pPrinter) or deleted
pDlgPrinter = NULL;
-
}
else
{
// PrinterDialog is used to transfer information on printing,
// so it will only be deleted here if dialog was cancelled
- DELETEZ( pDlgPrinter );
+ pDlgPrinter.disposeAndClear();
rReq.Ignore();
}
}
@@ -892,13 +891,13 @@ sal_uInt16 SfxViewShell::SetPrinter( SfxPrinter* /*pNewPrinter*/, SfxPrinterChan
return 0;
}
-SfxTabPage* SfxViewShell::CreatePrintOptionsPage
+VclPtr<SfxTabPage> SfxViewShell::CreatePrintOptionsPage
(
vcl::Window* /*pParent*/,
const SfxItemSet& /*rOptions*/
)
{
- return 0;
+ return VclPtr<SfxTabPage>();
}
bool SfxViewShell::HasPrintOptionsPage() const
diff --git a/sfx2/source/view/viewsh.cxx b/sfx2/source/view/viewsh.cxx
index 111b09c60619..5cda42ef38dc 100644
--- a/sfx2/source/view/viewsh.cxx
+++ b/sfx2/source/view/viewsh.cxx
@@ -594,8 +594,8 @@ void SfxViewShell::ExecMisc_Impl( SfxRequest &rReq )
if ( eResult == SfxMailModel::SEND_MAIL_ERROR )
{
- MessageDialog aBox( SfxGetpApp()->GetTopWindow(), SfxResId( STR_ERROR_SEND_MAIL ), VCL_MESSAGE_INFO);
- aBox.Execute();
+ ScopedVclPtrInstance< MessageDialog > aBox(SfxGetpApp()->GetTopWindow(), SfxResId( STR_ERROR_SEND_MAIL ), VCL_MESSAGE_INFO);
+ aBox->Execute();
rReq.Ignore();
}
else
@@ -614,8 +614,8 @@ void SfxViewShell::ExecMisc_Impl( SfxRequest &rReq )
SfxMailModel::SendMailResult eResult = aModel.SaveAndSend( xFrame, OUString() );
if( eResult == SfxMailModel::SEND_MAIL_ERROR )
{
- MessageDialog aBox( SfxGetpApp()->GetTopWindow(), SfxResId( STR_ERROR_SEND_MAIL ), VCL_MESSAGE_INFO);
- aBox.Execute();
+ ScopedVclPtrInstance< MessageDialog > aBox(SfxGetpApp()->GetTopWindow(), SfxResId( STR_ERROR_SEND_MAIL ), VCL_MESSAGE_INFO);
+ aBox->Execute();
rReq.Ignore();
}
else
@@ -1310,8 +1310,8 @@ bool SfxViewShell::PrepareClose
{
if ( bUI )
{
- MessageDialog aInfoBox( &GetViewFrame()->GetWindow(), SfxResId( STR_CANT_CLOSE ), VCL_MESSAGE_INFO );
- aInfoBox.Execute();
+ ScopedVclPtrInstance< MessageDialog > aInfoBox(&GetViewFrame()->GetWindow(), SfxResId( STR_CANT_CLOSE ), VCL_MESSAGE_INFO );
+ aInfoBox->Execute();
}
return false;