diff options
Diffstat (limited to 'sw/source/uibase/utlui/gloslst.cxx')
-rw-r--r-- | sw/source/uibase/utlui/gloslst.cxx | 33 |
1 files changed, 24 insertions, 9 deletions
diff --git a/sw/source/uibase/utlui/gloslst.cxx b/sw/source/uibase/utlui/gloslst.cxx index 7f18c24ab564..53980635be55 100644 --- a/sw/source/uibase/utlui/gloslst.cxx +++ b/sw/source/uibase/utlui/gloslst.cxx @@ -51,14 +51,17 @@ struct TripleString class SwGlossDecideDlg : public ModalDialog { - OKButton* m_pOk; - ListBox* m_pListLB; + VclPtr<OKButton> m_pOk; + VclPtr<ListBox> m_pListLB; DECL_LINK(DoubleClickHdl, void*); DECL_LINK(SelectHdl, void*); - public: - SwGlossDecideDlg(vcl::Window* pParent); +public: + SwGlossDecideDlg(vcl::Window* pParent); + virtual ~SwGlossDecideDlg(); + virtual void dispose() SAL_OVERRIDE; + ListBox& GetListBox() {return *m_pListLB;} }; @@ -73,6 +76,18 @@ SwGlossDecideDlg::SwGlossDecideDlg(vcl::Window* pParent) m_pListLB->SetSelectHdl(LINK(this, SwGlossDecideDlg, SelectHdl)); } +SwGlossDecideDlg::~SwGlossDecideDlg() +{ + disposeOnce(); +} + +void SwGlossDecideDlg::dispose() +{ + m_pOk.clear(); + m_pListLB.clear(); + ModalDialog::dispose(); +} + IMPL_LINK_NOARG(SwGlossDecideDlg, DoubleClickHdl) { EndDialog(RET_OK); @@ -143,16 +158,16 @@ bool SwGlossaryList::GetShortName(const OUString& rLongName, } else if(1 < nCount) { - SwGlossDecideDlg aDlg(0); - OUString sTitle = aDlg.GetText() + " " + aTripleStrings.front().sBlock; - aDlg.SetText(sTitle); + ScopedVclPtrInstance< SwGlossDecideDlg > aDlg(nullptr); + OUString sTitle = aDlg->GetText() + " " + aTripleStrings.front().sBlock; + aDlg->SetText(sTitle); - ListBox& rLB = aDlg.GetListBox(); + ListBox& rLB = aDlg->GetListBox(); for(std::vector<TripleString>::const_iterator i = aTripleStrings.begin(); i != aTripleStrings.end(); ++i) rLB.InsertEntry(i->sGroup.getToken(0, GLOS_DELIM)); rLB.SelectEntryPos(0); - if(RET_OK == aDlg.Execute() && + if(RET_OK == aDlg->Execute() && LISTBOX_ENTRY_NOTFOUND != rLB.GetSelectEntryPos()) { const TripleString& pTriple(aTripleStrings[rLB.GetSelectEntryPos()]); |