diff options
Diffstat (limited to 'sfx2/source/appl/impldde.cxx')
-rw-r--r-- | sfx2/source/appl/impldde.cxx | 30 |
1 files changed, 23 insertions, 7 deletions
diff --git a/sfx2/source/appl/impldde.cxx b/sfx2/source/appl/impldde.cxx index aa829e21a54f..11aecd90473f 100644 --- a/sfx2/source/appl/impldde.cxx +++ b/sfx2/source/appl/impldde.cxx @@ -57,14 +57,16 @@ namespace sfx2 class SvDDELinkEditDialog : public ModalDialog { - Edit *m_pEdDdeApp; - Edit *m_pEdDdeTopic; - Edit *m_pEdDdeItem; - OKButton *m_pOKButton; + VclPtr<Edit> m_pEdDdeApp; + VclPtr<Edit> m_pEdDdeTopic; + VclPtr<Edit> m_pEdDdeItem; + VclPtr<OKButton> m_pOKButton; DECL_STATIC_LINK( SvDDELinkEditDialog, EditHdl_Impl, Edit* ); public: SvDDELinkEditDialog( vcl::Window* pParent, SvBaseLink* ); + virtual ~SvDDELinkEditDialog(); + virtual void dispose() SAL_OVERRIDE; OUString GetCmd() const; }; @@ -90,6 +92,20 @@ SvDDELinkEditDialog::SvDDELinkEditDialog( vcl::Window* pParent, SvBaseLink* pLin m_pOKButton->Enable( !sServer.isEmpty() && !sTopic.isEmpty() && !sItem.isEmpty() ); } +SvDDELinkEditDialog::~SvDDELinkEditDialog() +{ + disposeOnce(); +} + +void SvDDELinkEditDialog::dispose() +{ + m_pEdDdeApp.clear(); + m_pEdDdeTopic.clear(); + m_pEdDdeItem.clear(); + m_pOKButton.clear(); + ModalDialog::dispose(); +} + OUString SvDDELinkEditDialog::GetCmd() const { OUString sCmd( m_pEdDdeApp->GetText() ), sRet; @@ -255,10 +271,10 @@ bool SvDDEObject::Connect( SvBaseLink * pSvLink ) void SvDDEObject::Edit( vcl::Window* pParent, sfx2::SvBaseLink* pBaseLink, const Link& rEndEditHdl ) { - SvDDELinkEditDialog aDlg( pParent, pBaseLink ); - if ( RET_OK == aDlg.Execute() && rEndEditHdl.IsSet() ) + ScopedVclPtrInstance< SvDDELinkEditDialog > aDlg(pParent, pBaseLink); + if ( RET_OK == aDlg->Execute() && rEndEditHdl.IsSet() ) { - OUString sCommand = aDlg.GetCmd(); + OUString sCommand = aDlg->GetCmd(); rEndEditHdl.Call( &sCommand ); } } |