summaryrefslogtreecommitdiff
path: root/sfx2/source/appl/impldde.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sfx2/source/appl/impldde.cxx')
-rw-r--r--sfx2/source/appl/impldde.cxx30
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 );
}
}