summaryrefslogtreecommitdiff
path: root/sw/source/ui/fldui/fldedt.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sw/source/ui/fldui/fldedt.cxx')
-rw-r--r--sw/source/ui/fldui/fldedt.cxx28
1 files changed, 17 insertions, 11 deletions
diff --git a/sw/source/ui/fldui/fldedt.cxx b/sw/source/ui/fldui/fldedt.cxx
index 32dd26eebaff..1b7906b02368 100644
--- a/sw/source/ui/fldui/fldedt.cxx
+++ b/sw/source/ui/fldui/fldedt.cxx
@@ -124,7 +124,7 @@ SwFldEditDlg::SwFldEditDlg(SwView& rVw)
// initialise controls
void SwFldEditDlg::Init()
{
- SwFldPage* pTabPage = static_cast<SwFldPage*>(GetTabPage());
+ VclPtr<SwFldPage> pTabPage = static_cast<SwFldPage*>(GetTabPage());
if( pTabPage )
{
@@ -159,10 +159,10 @@ void SwFldEditDlg::Init()
!pSh->HasReadonlySel() );
}
-SfxTabPage* SwFldEditDlg::CreatePage(sal_uInt16 nGroup)
+VclPtr<SfxTabPage> SwFldEditDlg::CreatePage(sal_uInt16 nGroup)
{
// create TabPage
- SfxTabPage* pTabPage = 0;
+ VclPtr<SfxTabPage> pTabPage;
switch (nGroup)
{
@@ -193,7 +193,7 @@ SfxTabPage* SwFldEditDlg::CreatePage(sal_uInt16 nGroup)
}
case GRP_DB:
pTabPage = SwFldDBPage::Create(get_content_area(), 0);
- static_cast<SwFldDBPage*>(pTabPage)->SetWrtShell(*pSh);
+ static_cast<SwFldDBPage*>(pTabPage.get())->SetWrtShell(*pSh);
break;
case GRP_VAR:
pTabPage = SwFldVarPage::Create(get_content_area(), 0);
@@ -205,7 +205,7 @@ SfxTabPage* SwFldEditDlg::CreatePage(sal_uInt16 nGroup)
if (pTabPage)
{
- static_cast<SwFldPage*>(pTabPage)->SetWrtShell(pSh);
+ static_cast<SwFldPage*>(pTabPage.get())->SetWrtShell(pSh);
SetTabPage(pTabPage);
}
@@ -214,8 +214,17 @@ SfxTabPage* SwFldEditDlg::CreatePage(sal_uInt16 nGroup)
SwFldEditDlg::~SwFldEditDlg()
{
+ disposeOnce();
+}
+
+void SwFldEditDlg::dispose()
+{
SwViewShell::SetCareWin(NULL);
pSh->EnterStdMode();
+ m_pPrevBT.clear();
+ m_pNextBT.clear();
+ m_pAddressBT.clear();
+ SfxSingleTabDialog::dispose();
}
void SwFldEditDlg::EnableInsert(bool bEnable)
@@ -235,12 +244,9 @@ IMPL_LINK_NOARG(SwFldEditDlg, OKHdl)
{
if (GetOKButton()->IsEnabled())
{
- SfxTabPage* pTabPage = GetTabPage();
+ VclPtr<SfxTabPage> pTabPage = GetTabPage();
if (pTabPage)
- {
pTabPage->FillItemSet(0);
-
- }
EndDialog( RET_OK );
}
@@ -261,7 +267,7 @@ IMPL_LINK( SwFldEditDlg, NextPrevHdl, Button *, pButton )
pSh->EnterStdMode();
SwFieldType *pOldTyp = 0;
- SwFldPage* pTabPage = static_cast<SwFldPage*>(GetTabPage());
+ VclPtr<SwFldPage> pTabPage = static_cast<SwFldPage*>(GetTabPage());
//#112462# FillItemSet may delete the current field
//that's why it has to be called before accessing the current field
@@ -281,7 +287,7 @@ IMPL_LINK( SwFldEditDlg, NextPrevHdl, Button *, pButton )
sal_uInt16 nGroup = rMgr.GetGroup(false, pCurFld->GetTypeId(), pCurFld->GetSubType());
if (nGroup != pTabPage->GetGroup())
- pTabPage = static_cast<SwFldPage*>(CreatePage(nGroup));
+ pTabPage = static_cast<SwFldPage*>(CreatePage(nGroup).get());
pTabPage->EditNewField();