diff options
author | Noel Grandin <noel@peralex.com> | 2016-09-21 14:48:15 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2016-10-27 06:08:30 +0000 |
commit | eca5ea9f79181d45cd7fbabe2313617d3025818a (patch) | |
tree | 10b5837fe04212349825742b38f5a37be9ce7009 | |
parent | bbd44f8f89839b5abb4ec6c7ea195431de5b2f48 (diff) |
make the AbstractDialog stuff extend from VclReferenceBase
Because some stuff wants to multiple-inherit from VclAbstractDialog and
OutputDevice-subclasses, and we'd prefer to keep all the lifetime
management through a single smart pointer class (VclPtr)
The change in msgbox.cxx and window.cxx is to workaround a bug in
VS2013 to do with virtual inheritance and delegating constructors.
Change-Id: I178e8983b7d20a7d2790aa283be838dca5d14773
Reviewed-on: https://gerrit.libreoffice.org/29140
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Tested-by: Noel Grandin <noel.grandin@collabora.co.uk>
56 files changed, 747 insertions, 654 deletions
diff --git a/cui/source/dialogs/insrc.cxx b/cui/source/dialogs/insrc.cxx index 13f18c3b5493..a6d6a4bd2304 100644 --- a/cui/source/dialogs/insrc.cxx +++ b/cui/source/dialogs/insrc.cxx @@ -47,10 +47,16 @@ SvxInsRowColDlg::SvxInsRowColDlg(vcl::Window* pParent, bool bCol, const OString& SvxInsRowColDlg::~SvxInsRowColDlg() { + disposeOnce(); +} + +void SvxInsRowColDlg::dispose() +{ m_pCountEdit.clear(); m_pBeforeBtn.clear(); m_pAfterBtn.clear(); m_pDialog.disposeAndClear(); + SvxAbstractInsRowColDlg::dispose(); } short SvxInsRowColDlg::Execute() diff --git a/cui/source/dialogs/newtabledlg.cxx b/cui/source/dialogs/newtabledlg.cxx index 6c02303647f2..50e752789f95 100644 --- a/cui/source/dialogs/newtabledlg.cxx +++ b/cui/source/dialogs/newtabledlg.cxx @@ -30,9 +30,15 @@ SvxNewTableDialog::SvxNewTableDialog() SvxNewTableDialog::~SvxNewTableDialog() { + disposeOnce(); +} + +void SvxNewTableDialog::dispose() +{ mpNumColumns.clear(); mpNumRows.clear(); m_pDialog.disposeAndClear(); + SvxAbstractNewTableDialog::dispose(); } short SvxNewTableDialog::Execute() diff --git a/cui/source/dialogs/scriptdlg.cxx b/cui/source/dialogs/scriptdlg.cxx index 8f7b433521d6..a737b9ed6a32 100644 --- a/cui/source/dialogs/scriptdlg.cxx +++ b/cui/source/dialogs/scriptdlg.cxx @@ -71,7 +71,7 @@ using namespace css::document; void ShowErrorDialog( const Any& aException ) { - std::unique_ptr<SvxScriptErrorDialog> pDlg(new SvxScriptErrorDialog( aException )); + ScopedVclPtrInstance<SvxScriptErrorDialog> pDlg( aException ); pDlg->Execute(); } diff --git a/cui/source/dialogs/splitcelldlg.cxx b/cui/source/dialogs/splitcelldlg.cxx index 3fdf3e578327..f786644b9ba6 100644 --- a/cui/source/dialogs/splitcelldlg.cxx +++ b/cui/source/dialogs/splitcelldlg.cxx @@ -66,11 +66,17 @@ SvxSplitTableDlg::SvxSplitTableDlg( vcl::Window *pParent, bool bIsTableVertical, SvxSplitTableDlg::~SvxSplitTableDlg() { + disposeOnce(); +} + +void SvxSplitTableDlg::dispose() +{ m_pCountEdit.clear(); m_pHorzBox.clear(); m_pVertBox.clear(); m_pPropCB.clear(); m_pDialog.disposeAndClear(); + SvxAbstractSplittTableDialog::dispose(); } IMPL_LINK( SvxSplitTableDlg, ClickHdl, Button *, pButton, void ) diff --git a/cui/source/factory/dlgfact.cxx b/cui/source/factory/dlgfact.cxx index 47f4f4c7e59c..01e97c794872 100644 --- a/cui/source/factory/dlgfact.cxx +++ b/cui/source/factory/dlgfact.cxx @@ -143,7 +143,13 @@ IMPL_ABSTDLG_BASE(AbstractScreenshotAnnotationDlg_Impl); // virtual VclAbstractDialog2_Impl::~VclAbstractDialog2_Impl() { + disposeOnce(); +} + +void VclAbstractDialog2_Impl::dispose() +{ m_pDlg.disposeAndClear(); + VclAbstractDialog2::dispose(); } // virtual @@ -798,7 +804,7 @@ bool AbstractPasswordToOpenModifyDialog_Impl::IsRecommendToOpenReadonly() const } // Create dialogs with simplest interface -VclAbstractDialog* AbstractDialogFactory_Impl::CreateVclDialog( vcl::Window* pParent, sal_uInt32 nResId ) +VclPtr<VclAbstractDialog> AbstractDialogFactory_Impl::CreateVclDialog( vcl::Window* pParent, sal_uInt32 nResId ) { VclPtr<Dialog> pDlg; switch ( nResId ) @@ -834,11 +840,11 @@ VclAbstractDialog* AbstractDialogFactory_Impl::CreateVclDialog( vcl::Window* pPa } if ( pDlg ) - return new CuiVclAbstractDialog_Impl( pDlg ); + return VclPtr<CuiVclAbstractDialog_Impl>::Create( pDlg ); return nullptr; } -VclAbstractDialog* AbstractDialogFactory_Impl::CreateFrameDialog( const Reference< frame::XFrame >& rxFrame, +VclPtr<VclAbstractDialog> AbstractDialogFactory_Impl::CreateFrameDialog( const Reference< frame::XFrame >& rxFrame, sal_uInt32 nResId, const OUString& rParameter ) { VclPtr<Dialog> pDlg; @@ -855,19 +861,19 @@ VclAbstractDialog* AbstractDialogFactory_Impl::CreateFrameDialog( const Referenc } if ( pDlg ) - return new CuiVclAbstractDialog_Impl( pDlg ); + return VclPtr<CuiVclAbstractDialog_Impl>::Create( pDlg ); else return nullptr; } // TabDialog outside the drawing layer -SfxAbstractTabDialog* AbstractDialogFactory_Impl::CreateAutoCorrTabDialog( const SfxItemSet* pAttrSet ) +VclPtr<SfxAbstractTabDialog> AbstractDialogFactory_Impl::CreateAutoCorrTabDialog( const SfxItemSet* pAttrSet ) { VclPtrInstance<OfaAutoCorrDlg> pDlg( nullptr, pAttrSet ); - return new CuiAbstractTabDialog_Impl( pDlg ); + return VclPtr<CuiAbstractTabDialog_Impl>::Create( pDlg ); } -SfxAbstractTabDialog* AbstractDialogFactory_Impl::CreateCustomizeTabDialog( +VclPtr<SfxAbstractTabDialog> AbstractDialogFactory_Impl::CreateCustomizeTabDialog( const SfxItemSet* pAttrSet, const Reference< frame::XFrame >& xViewFrame ) { @@ -875,96 +881,95 @@ SfxAbstractTabDialog* AbstractDialogFactory_Impl::CreateCustomizeTabDialog( VclPtrInstance<SvxConfigDialog> pDlg1( nullptr, pAttrSet ); pDlg1->SetFrame(xViewFrame); pDlg.reset(pDlg1); - return new CuiAbstractTabDialog_Impl( pDlg ); + return VclPtr<CuiAbstractTabDialog_Impl>::Create( pDlg ); } // TabDialog that use functionality of the drawing layer -SfxAbstractTabDialog* AbstractDialogFactory_Impl::CreateTextTabDialog( vcl::Window* pParent, +VclPtr<SfxAbstractTabDialog> AbstractDialogFactory_Impl::CreateTextTabDialog( vcl::Window* pParent, const SfxItemSet* pAttrSet, SdrView* pView ) { VclPtrInstance<SvxTextTabDialog> pDlg( pParent, pAttrSet, pView ); - return new CuiAbstractTabDialog_Impl( pDlg ); + return VclPtr<CuiAbstractTabDialog_Impl>::Create( pDlg ); } // TabDialog that use functionality of the drawing layer and add AnchorTypes -- for SvxCaptionTabDialog -AbstractSvxCaptionDialog* AbstractDialogFactory_Impl::CreateCaptionDialog( vcl::Window* pParent, +VclPtr<AbstractSvxCaptionDialog> AbstractDialogFactory_Impl::CreateCaptionDialog( vcl::Window* pParent, const SdrView* pView, SvxAnchorIds nAnchorTypes ) { VclPtrInstance<SvxCaptionTabDialog> pDlg( pParent, pView, nAnchorTypes ); - return new AbstractSvxCaptionDialog_Impl( pDlg ); + return VclPtr<AbstractSvxCaptionDialog_Impl>::Create( pDlg ); } -AbstractSvxDistributeDialog* AbstractDialogFactory_Impl::CreateSvxDistributeDialog(const SfxItemSet& rAttr) +VclPtr<AbstractSvxDistributeDialog> AbstractDialogFactory_Impl::CreateSvxDistributeDialog(const SfxItemSet& rAttr) { VclPtrInstance<SvxDistributeDialog> pDlg( nullptr, rAttr, SvxDistributeHorizontal::NONE, SvxDistributeVertical::NONE); - return new AbstractSvxDistributeDialog_Impl( pDlg ); + return VclPtr<AbstractSvxDistributeDialog_Impl>::Create( pDlg ); } -AbstractHangulHanjaConversionDialog* AbstractDialogFactory_Impl::CreateHangulHanjaConversionDialog(vcl::Window* pParent, +VclPtr<AbstractHangulHanjaConversionDialog> AbstractDialogFactory_Impl::CreateHangulHanjaConversionDialog(vcl::Window* pParent, editeng::HangulHanjaConversion::ConversionDirection _ePrimaryDirection ) { VclPtrInstance<HangulHanjaConversionDialog> pDlg( pParent, _ePrimaryDirection); - return new AbstractHangulHanjaConversionDialog_Impl( pDlg ); + return VclPtr<AbstractHangulHanjaConversionDialog_Impl>::Create( pDlg ); } -AbstractThesaurusDialog* AbstractDialogFactory_Impl::CreateThesaurusDialog( vcl::Window* pParent, +VclPtr<AbstractThesaurusDialog> AbstractDialogFactory_Impl::CreateThesaurusDialog( vcl::Window* pParent, css::uno::Reference< css::linguistic2::XThesaurus > xThesaurus, const OUString &rWord, sal_Int16 nLanguage ) { VclPtrInstance<SvxThesaurusDialog> pDlg( pParent, xThesaurus, rWord, nLanguage ); - return new AbstractThesaurusDialog_Impl( pDlg ); + return VclPtr<AbstractThesaurusDialog_Impl>::Create( pDlg ); } -AbstractHyphenWordDialog* AbstractDialogFactory_Impl::CreateHyphenWordDialog( vcl::Window* pParent, +VclPtr<AbstractHyphenWordDialog> AbstractDialogFactory_Impl::CreateHyphenWordDialog( vcl::Window* pParent, const OUString &rWord, LanguageType nLang, css::uno::Reference< css::linguistic2::XHyphenator > &xHyphen, SvxSpellWrapper* pWrapper ) { VclPtrInstance<SvxHyphenWordDialog> pDlg( rWord, nLang, pParent, xHyphen, pWrapper ); - return new AbstractHyphenWordDialog_Impl( pDlg ); + return VclPtr<AbstractHyphenWordDialog_Impl>::Create( pDlg ); } -AbstractFmShowColsDialog * AbstractDialogFactory_Impl::CreateFmShowColsDialog() +VclPtr<AbstractFmShowColsDialog> AbstractDialogFactory_Impl::CreateFmShowColsDialog() { VclPtrInstance<FmShowColsDialog> pDlg( nullptr ); - return new AbstractFmShowColsDialog_Impl( pDlg ); + return VclPtr<AbstractFmShowColsDialog_Impl>::Create( pDlg ); } -AbstractSvxZoomDialog * AbstractDialogFactory_Impl::CreateSvxZoomDialog( vcl::Window* pParent, + +VclPtr<AbstractSvxZoomDialog> AbstractDialogFactory_Impl::CreateSvxZoomDialog( vcl::Window* pParent, const SfxItemSet& rCoreSet) { VclPtrInstance<SvxZoomDialog> pDlg( pParent, rCoreSet); - return new AbstractSvxZoomDialog_Impl( pDlg ); + return VclPtr<AbstractSvxZoomDialog_Impl>::Create( pDlg ); } -AbstractSpellDialog * AbstractDialogFactory_Impl::CreateSvxSpellDialog( +VclPtr<AbstractSpellDialog> AbstractDialogFactory_Impl::CreateSvxSpellDialog( vcl::Window* pParent, SfxBindings* pBindings, svx::SpellDialogChildWindow* pSpellChildWindow ) { VclPtrInstance<svx::SpellDialog> pDlg(pSpellChildWindow, pParent, pBindings); - return new AbstractSpellDialog_Impl(pDlg); + return VclPtr<AbstractSpellDialog_Impl>::Create(pDlg); } -VclAbstractRefreshableDialog * AbstractDialogFactory_Impl::CreateActualizeProgressDialog( vcl::Window* pParent, GalleryTheme* pThm ) +VclPtr<VclAbstractRefreshableDialog> AbstractDialogFactory_Impl::CreateActualizeProgressDialog( vcl::Window* pParent, GalleryTheme* pThm ) { VclPtrInstance<ActualizeProgress> pDlg(pParent, pThm); - return new VclAbstractRefreshableDialog_Impl( pDlg ); + return VclPtr<VclAbstractRefreshableDialog_Impl>::Create( pDlg ); } -VclAbstractDialog* -AbstractDialogFactory_Impl::CreateScriptErrorDialog(const css::uno::Any& rException) +VclPtr<VclAbstractDialog> AbstractDialogFactory_Impl::CreateScriptErrorDialog(const css::uno::Any& rException) { - return new SvxScriptErrorDialog(rException); + return VclPtr<SvxScriptErrorDialog>::Create(rException); } -AbstractScriptSelectorDialog* -AbstractDialogFactory_Impl::CreateScriptSelectorDialog( +VclPtr<AbstractScriptSelectorDialog> AbstractDialogFactory_Impl::CreateScriptSelectorDialog( vcl::Window* pParent, const Reference< frame::XFrame >& _rxFrame ) { VclPtrInstance<SvxScriptSelectorDialog> pDlg(pParent, false/*bShowSlots*/, _rxFrame); - return new AbstractScriptSelectorDialog_Impl(pDlg); + return VclPtr<AbstractScriptSelectorDialog_Impl>::Create(pDlg); } OUString AbstractScriptSelectorDialog_Impl::GetScriptURL() const @@ -981,72 +986,72 @@ void AbstractScriptSelectorDialog_Impl::SetRunLabel() return; } -VclAbstractDialog * AbstractDialogFactory_Impl::CreateSvxScriptOrgDialog( vcl::Window* pParent, +VclPtr<VclAbstractDialog> AbstractDialogFactory_Impl::CreateSvxScriptOrgDialog( vcl::Window* pParent, const OUString& rLanguage) { VclPtrInstance<SvxScriptOrgDialog> pDlg( pParent, rLanguage); - return new CuiVclAbstractDialog_Impl( pDlg ); + return VclPtr<CuiVclAbstractDialog_Impl>::Create( pDlg ); } -AbstractTitleDialog * AbstractDialogFactory_Impl::CreateTitleDialog( vcl::Window* pParent, +VclPtr<AbstractTitleDialog> AbstractDialogFactory_Impl::CreateTitleDialog( vcl::Window* pParent, const OUString& rOldText) { VclPtrInstance<TitleDialog> pDlg( pParent, rOldText); - return new AbstractTitleDialog_Impl( pDlg ); + return VclPtr<AbstractTitleDialog_Impl>::Create( pDlg ); } -AbstractGalleryIdDialog * AbstractDialogFactory_Impl::CreateGalleryIdDialog( vcl::Window* pParent, +VclPtr<AbstractGalleryIdDialog> AbstractDialogFactory_Impl::CreateGalleryIdDialog( vcl::Window* pParent, GalleryTheme* pThm ) { VclPtrInstance<GalleryIdDialog> pDlg( pParent, pThm); - return new AbstractGalleryIdDialog_Impl( pDlg ); + return VclPtr<AbstractGalleryIdDialog_Impl>::Create( pDlg ); } -VclAbstractDialog2 * AbstractDialogFactory_Impl::CreateGalleryThemePropertiesDialog( +VclPtr<VclAbstractDialog2> AbstractDialogFactory_Impl::CreateGalleryThemePropertiesDialog( ExchangeData* pData, SfxItemSet* pItemSet) { VclPtrInstance<GalleryThemeProperties> pDlg( nullptr, pData, pItemSet); - return new VclAbstractDialog2_Impl( pDlg ); + return VclPtr<VclAbstractDialog2_Impl>::Create( pDlg ); } -AbstractURLDlg * AbstractDialogFactory_Impl::CreateURLDialog( vcl::Window* pParent, +VclPtr<AbstractURLDlg> AbstractDialogFactory_Impl::CreateURLDialog( vcl::Window* pParent, const OUString& rURL, const OUString& rAltText, const OUString& rDescription, const OUString& rTarget, const OUString& rName, TargetList& rTargetList ) { VclPtrInstance<URLDlg> pDlg( pParent, rURL, rAltText, rDescription, rTarget, rName, rTargetList); - return new AbstractURLDlg_Impl( pDlg ); + return VclPtr<AbstractURLDlg_Impl>::Create( pDlg ); } -SfxAbstractTabDialog* AbstractDialogFactory_Impl::CreateTabItemDialog(vcl::Window* pParent, +VclPtr<SfxAbstractTabDialog> AbstractDialogFactory_Impl::CreateTabItemDialog(vcl::Window* pParent, const SfxItemSet& rSet) { VclPtrInstance<SvxSearchFormatDialog> pDlg(pParent, rSet); - return new CuiAbstractTabDialog_Impl(pDlg); + return VclPtr<CuiAbstractTabDialog_Impl>::Create(pDlg); } -VclAbstractDialog* AbstractDialogFactory_Impl::CreateSvxSearchAttributeDialog( vcl::Window* pParent, +VclPtr<VclAbstractDialog> AbstractDialogFactory_Impl::CreateSvxSearchAttributeDialog( vcl::Window* pParent, SearchAttrItemList& rLst, const sal_uInt16* pWhRanges ) { VclPtrInstance<SvxSearchAttributeDialog> pDlg( pParent, rLst, pWhRanges); - return new CuiVclAbstractDialog_Impl( pDlg ); + return VclPtr<CuiVclAbstractDialog_Impl>::Create( pDlg ); } -AbstractSvxSearchSimilarityDialog * AbstractDialogFactory_Impl::CreateSvxSearchSimilarityDialog( vcl::Window* pParent, +VclPtr<AbstractSvxSearchSimilarityDialog> AbstractDialogFactory_Impl::CreateSvxSearchSimilarityDialog( vcl::Window* pParent, bool bRelax, sal_uInt16 nOther, sal_uInt16 nShorter, sal_uInt16 nLonger) { VclPtrInstance<SvxSearchSimilarityDialog> pDlg( pParent, bRelax, nOther, nShorter, nLonger ); - return new AbstractSvxSearchSimilarityDialog_Impl( pDlg ); + return VclPtr<AbstractSvxSearchSimilarityDialog_Impl>::Create( pDlg ); } //UUUU -SfxAbstractTabDialog* AbstractDialogFactory_Impl::CreateSvxBorderBackgroundDlg( +VclPtr<SfxAbstractTabDialog> AbstractDialogFactory_Impl::CreateSvxBorderBackgroundDlg( vcl::Window* pParent, const SfxItemSet& rCoreSet, bool bEnableSelector, @@ -1058,19 +1063,19 @@ SfxAbstractTabDialog* AbstractDialogFactory_Impl::CreateSvxBorderBackgroundDlg( bEnableSelector, bEnableDrawingLayerFillStyles); - return new CuiAbstractTabDialog_Impl(pDlg); + return VclPtr<CuiAbstractTabDialog_Impl>::Create(pDlg); } -AbstractSvxTransformTabDialog* AbstractDialogFactory_Impl::CreateSvxTransformTabDialog( vcl::Window* pParent, +VclPtr<AbstractSvxTransformTabDialog> AbstractDialogFactory_Impl::CreateSvxTransformTabDialog( vcl::Window* pParent, const SfxItemSet* pAttr, const SdrView* pView, SvxAnchorIds nAnchorTypes ) { VclPtrInstance<SvxTransformTabDialog> pDlg( pParent, pAttr,pView, nAnchorTypes); - return new AbstractSvxTransformTabDialog_Impl( pDlg ); + return VclPtr<AbstractSvxTransformTabDialog_Impl>::Create( pDlg ); } -SfxAbstractTabDialog* AbstractDialogFactory_Impl::CreateSchTransformTabDialog( vcl::Window* pParent, +VclPtr<SfxAbstractTabDialog> AbstractDialogFactory_Impl::CreateSchTransformTabDialog( vcl::Window* pParent, const SfxItemSet* pAttr, const SdrView* pSdrView, bool bSizeTabPage @@ -1079,73 +1084,73 @@ SfxAbstractTabDialog* AbstractDialogFactory_Impl::CreateSchTransformTabDialog( v VclPtrInstance<SvxTransformTabDialog> pDlg( pParent, pAttr,pSdrView, bSizeTabPage ? SvxAnchorIds::NoProtect : SvxAnchorIds::NoProtect|SvxAnchorIds::NoResize); pDlg->RemoveTabPage( "RID_SVXPAGE_ANGLE" ); pDlg->RemoveTabPage( "RID_SVXPAGE_SLANT" ); - return new CuiAbstractTabDialog_Impl( pDlg ); + return VclPtr<CuiAbstractTabDialog_Impl>::Create( pDlg ); } -AbstractSvxJSearchOptionsDialog * AbstractDialogFactory_Impl::CreateSvxJSearchOptionsDialog( vcl::Window* pParent, +VclPtr<AbstractSvxJSearchOptionsDialog> AbstractDialogFactory_Impl::CreateSvxJSearchOptionsDialog( vcl::Window* pParent, const SfxItemSet& rOptionsSet, sal_Int32 nInitialFlags) { VclPtrInstance<SvxJSearchOptionsDialog> pDlg( pParent, rOptionsSet, nInitialFlags ); - return new AbstractSvxJSearchOptionsDialog_Impl( pDlg ); + return VclPtr<AbstractSvxJSearchOptionsDialog_Impl>::Create( pDlg ); } -AbstractFmInputRecordNoDialog * AbstractDialogFactory_Impl::CreateFmInputRecordNoDialog( ) +VclPtr<AbstractFmInputRecordNoDialog> AbstractDialogFactory_Impl::CreateFmInputRecordNoDialog( ) { VclPtrInstance<FmInputRecordNoDialog> pDlg( nullptr ); - return new AbstractFmInputRecordNoDialog_Impl( pDlg ); + return VclPtr<AbstractFmInputRecordNoDialog_Impl>::Create( pDlg ); } -AbstractSvxNewDictionaryDialog * AbstractDialogFactory_Impl::CreateSvxNewDictionaryDialog( vcl::Window* pParent ) +VclPtr<AbstractSvxNewDictionaryDialog> AbstractDialogFactory_Impl::CreateSvxNewDictionaryDialog( vcl::Window* pParent ) { VclPtrInstance<SvxNewDictionaryDialog> pDlg( pParent ); - return new AbstractSvxNewDictionaryDialog_Impl( pDlg ); + return VclPtr<AbstractSvxNewDictionaryDialog_Impl>::Create( pDlg ); } -VclAbstractDialog* AbstractDialogFactory_Impl::CreateSvxEditDictionaryDialog( vcl::Window* pParent, +VclPtr<VclAbstractDialog> AbstractDialogFactory_Impl::CreateSvxEditDictionaryDialog( vcl::Window* pParent, const OUString& rName ) { VclPtrInstance<SvxEditDictionaryDialog> pDlg( pParent, rName ); - return new CuiVclAbstractDialog_Impl( pDlg ); + return VclPtr<CuiVclAbstractDialog_Impl>::Create( pDlg ); } -AbstractSvxNameDialog * AbstractDialogFactory_Impl::CreateSvxNameDialog( vcl::Window* pParent, +VclPtr<AbstractSvxNameDialog> AbstractDialogFactory_Impl::CreateSvxNameDialog( vcl::Window* pParent, const OUString& rName, const OUString& rDesc ) { VclPtrInstance<SvxNameDialog> pDlg( pParent, rName, rDesc ); - return new AbstractSvxNameDialog_Impl( pDlg ); + return VclPtr<AbstractSvxNameDialog_Impl>::Create( pDlg ); } -AbstractSvxObjectNameDialog* AbstractDialogFactory_Impl::CreateSvxObjectNameDialog(const OUString& rName ) +VclPtr<AbstractSvxObjectNameDialog> AbstractDialogFactory_Impl::CreateSvxObjectNameDialog(const OUString& rName ) { - return new AbstractSvxObjectNameDialog_Impl(VclPtr<SvxObjectNameDialog>::Create(nullptr, rName)); + return VclPtr<AbstractSvxObjectNameDialog_Impl>::Create(VclPtr<SvxObjectNameDialog>::Create(nullptr, rName)); } -AbstractSvxObjectTitleDescDialog* AbstractDialogFactory_Impl::CreateSvxObjectTitleDescDialog(const OUString& rTitle, const OUString& rDescription) +VclPtr<AbstractSvxObjectTitleDescDialog> AbstractDialogFactory_Impl::CreateSvxObjectTitleDescDialog(const OUString& rTitle, const OUString& rDescription) { - return new AbstractSvxObjectTitleDescDialog_Impl(VclPtr<SvxObjectTitleDescDialog>::Create(nullptr, rTitle, rDescription)); + return VclPtr<AbstractSvxObjectTitleDescDialog_Impl>::Create(VclPtr<SvxObjectTitleDescDialog>::Create(nullptr, rTitle, rDescription)); } -AbstractSvxMultiPathDialog * AbstractDialogFactory_Impl::CreateSvxMultiPathDialog(vcl::Window* pParent) +VclPtr<AbstractSvxMultiPathDialog> AbstractDialogFactory_Impl::CreateSvxMultiPathDialog(vcl::Window* pParent) { VclPtrInstance<SvxMultiPathDialog> pDlg(pParent); - return new AbstractSvxMultiPathDialog_Impl( pDlg ); + return VclPtr<AbstractSvxMultiPathDialog_Impl>::Create( pDlg ); } -AbstractSvxMultiPathDialog * AbstractDialogFactory_Impl::CreateSvxPathSelectDialog(vcl::Window* pParent) +VclPtr<AbstractSvxMultiPathDialog> AbstractDialogFactory_Impl::CreateSvxPathSelectDialog(vcl::Window* pParent) { VclPtrInstance<SvxPathSelectDialog> pDlg(pParent); - return new AbstractSvxPathSelectDialog_Impl( pDlg ); + return VclPtr<AbstractSvxPathSelectDialog_Impl>::Create( pDlg ); } -AbstractSvxHpLinkDlg * AbstractDialogFactory_Impl::CreateSvxHpLinkDlg (vcl::Window* pParent, +VclPtr<AbstractSvxHpLinkDlg> AbstractDialogFactory_Impl::CreateSvxHpLinkDlg (vcl::Window* pParent, SfxBindings* pBindings) { SvxHpLinkDlg* pDlg = VclPtr<SvxHpLinkDlg>::Create( pParent, pBindings ); - return new AbstractSvxHpLinkDlg_Impl(pDlg); + return VclPtr<AbstractSvxHpLinkDlg_Impl>::Create(pDlg); } -AbstractFmSearchDialog* AbstractDialogFactory_Impl::CreateFmSearchDialog(vcl::Window* pParent, +VclPtr<AbstractFmSearchDialog> AbstractDialogFactory_Impl::CreateFmSearchDialog(vcl::Window* pParent, const OUString& strInitialText, const ::std::vector< OUString >& _rContexts, sal_Int16 nInitialContext, @@ -1153,70 +1158,70 @@ AbstractFmSearchDialog* AbstractDialogFactory_Impl::CreateFmSearchDialog(vcl::W { VclPtrInstance<FmSearchDialog> pDlg( pParent, strInitialText, _rContexts, nInitialContext, lnkContextSupplier ); - return new AbstractFmSearchDialog_Impl( pDlg ); + return VclPtr<AbstractFmSearchDialog_Impl>::Create( pDlg ); } -AbstractGraphicFilterDialog * AbstractDialogFactory_Impl::CreateGraphicFilterEmboss (vcl::Window* pParent, +VclPtr<AbstractGraphicFilterDialog> AbstractDialogFactory_Impl::CreateGraphicFilterEmboss (vcl::Window* pParent, const Graphic& rGraphic) { VclPtrInstance<GraphicFilterEmboss> pDlg( pParent, rGraphic, RectPoint::MM ); - return new AbstractGraphicFilterDialog_Impl( pDlg ); + return VclPtr<AbstractGraphicFilterDialog_Impl>::Create( pDlg ); } -AbstractGraphicFilterDialog * AbstractDialogFactory_Impl::CreateGraphicFilterPoster(vcl::Window* pParent, +VclPtr<AbstractGraphicFilterDialog> AbstractDialogFactory_Impl::CreateGraphicFilterPoster(vcl::Window* pParent, const Graphic& rGraphic) { VclPtrInstance<GraphicFilterPoster> pDlg( pParent, rGraphic, 16 ); - return new AbstractGraphicFilterDialog_Impl( pDlg ); + return VclPtr<AbstractGraphicFilterDialog_Impl>::Create( pDlg ); } -AbstractGraphicFilterDialog * AbstractDialogFactory_Impl::CreateGraphicFilterSepia (vcl::Window* pParent, +VclPtr<AbstractGraphicFilterDialog> AbstractDialogFactory_Impl::CreateGraphicFilterSepia (vcl::Window* pParent, const Graphic& rGraphic) { VclPtrInstance<GraphicFilterSepia> pDlg( pParent, rGraphic, 10 ); - return new AbstractGraphicFilterDialog_Impl( pDlg ); + return VclPtr<AbstractGraphicFilterDialog_Impl>::Create( pDlg ); } -AbstractGraphicFilterDialog * AbstractDialogFactory_Impl::CreateGraphicFilterSmooth(vcl::Window* pParent, +VclPtr<AbstractGraphicFilterDialog> AbstractDialogFactory_Impl::CreateGraphicFilterSmooth(vcl::Window* pParent, const Graphic& rGraphic, double nRadius) { VclPtrInstance<GraphicFilterSmooth> pDlg( pParent, rGraphic, nRadius ); - return new AbstractGraphicFilterDialog_Impl( pDlg ); + return VclPtr<AbstractGraphicFilterDialog_Impl>::Create( pDlg ); } -AbstractGraphicFilterDialog * AbstractDialogFactory_Impl::CreateGraphicFilterSolarize (vcl::Window* pParent, +VclPtr<AbstractGraphicFilterDialog> AbstractDialogFactory_Impl::CreateGraphicFilterSolarize (vcl::Window* pParent, const Graphic& rGraphic) { VclPtrInstance<GraphicFilterSolarize> pDlg( pParent, rGraphic, 128, false/*bInvert*/ ); - return new AbstractGraphicFilterDialog_Impl( pDlg ); + return VclPtr<AbstractGraphicFilterDialog_Impl>::Create( pDlg ); } -AbstractGraphicFilterDialog * AbstractDialogFactory_Impl::CreateGraphicFilterMosaic (vcl::Window* pParent, +VclPtr<AbstractGraphicFilterDialog> AbstractDialogFactory_Impl::CreateGraphicFilterMosaic (vcl::Window* pParent, const Graphic& rGraphic) { VclPtrInstance<GraphicFilterMosaic> pDlg(pParent, rGraphic, 4, 4, false/*bEnhanceEdges*/); - return new AbstractGraphicFilterDialog_Impl( pDlg ); + return VclPtr<AbstractGraphicFilterDialog_Impl>::Create( pDlg ); } -AbstractSvxAreaTabDialog* AbstractDialogFactory_Impl::CreateSvxAreaTabDialog( vcl::Window* pParent, +VclPtr<AbstractSvxAreaTabDialog> AbstractDialogFactory_Impl::CreateSvxAreaTabDialog( vcl::Window* pParent, const SfxItemSet* pAttr, SdrModel* pModel, bool bShadow) { VclPtrInstance<SvxAreaTabDialog> pDlg( pParent, pAttr, pModel, bShadow ); - return new AbstractSvxAreaTabDialog_Impl( pDlg ); + return VclPtr<AbstractSvxAreaTabDialog_Impl>::Create( pDlg ); } -SfxAbstractTabDialog* AbstractDialogFactory_Impl::CreateSvxLineTabDialog( vcl::Window* pParent, const SfxItemSet* pAttr, //add forSvxLineTabDialog +VclPtr<SfxAbstractTabDialog> AbstractDialogFactory_Impl::CreateSvxLineTabDialog( vcl::Window* pParent, const SfxItemSet* pAttr, //add forSvxLineTabDialog SdrModel* pModel, const SdrObject* pObj , bool bHasObj) { VclPtrInstance<SvxLineTabDialog> pDlg( pParent, pAttr, pModel,pObj,bHasObj ); - return new CuiAbstractTabDialog_Impl( pDlg ); + return VclPtr<CuiAbstractTabDialog_Impl>::Create( pDlg ); } -SfxAbstractDialog* AbstractDialogFactory_Impl::CreateSfxDialog( vcl::Window* pParent, +VclPtr<SfxAbstractDialog> AbstractDialogFactory_Impl::CreateSfxDialog( vcl::Window* pParent, const SfxItemSet& rAttr, const Reference< XFrame >& _rxDocumentFrame, sal_uInt32 nResId @@ -1236,11 +1241,11 @@ SfxAbstractDialog* AbstractDialogFactory_Impl::CreateSfxDialog( vcl::Window* pPa } if ( pDlg ) - return new CuiAbstractSfxDialog_Impl( pDlg ); + return VclPtr<CuiAbstractSfxDialog_Impl>::Create( pDlg ); return nullptr; } -SfxAbstractDialog* AbstractDialogFactory_Impl::CreateSfxDialog( vcl::Window* pParent, +VclPtr<SfxAbstractDialog> AbstractDialogFactory_Impl::CreateSfxDialog( vcl::Window* pParent, const SfxItemSet& rAttr, const SdrView* pView, sal_uInt32 nResId @@ -1264,17 +1269,17 @@ SfxAbstractDialog* AbstractDialogFactory_Impl::CreateSfxDialog( vcl::Window* pPa } if ( pDlg ) - return new CuiAbstractSfxDialog_Impl( pDlg ); + return VclPtr<CuiAbstractSfxDialog_Impl>::Create( pDlg ); return nullptr; } -AbstractSvxPostItDialog* AbstractDialogFactory_Impl::CreateSvxPostItDialog( vcl::Window* pParent, +VclPtr<AbstractSvxPostItDialog> AbstractDialogFactory_Impl::CreateSvxPostItDialog( vcl::Window* pParent, const SfxItemSet& rCoreSet, bool bPrevNext ) { VclPtrInstance<SvxPostItDialog> pDlg( pParent, rCoreSet, bPrevNext ); - return new AbstractSvxPostItDialog_Impl( pDlg ); + return VclPtr<AbstractSvxPostItDialog_Impl>::Create( pDlg ); } class SvxMacroAssignDialog : public VclAbstractDialog @@ -1290,10 +1295,11 @@ public: virtual short Execute() override; virtual ~SvxMacroAssignDialog() override; + virtual void dispose() override; private: SfxItemSet m_aItems; - VclPtr< SvxMacroAssignDlg > m_pDialog; + VclPtr<SvxMacroAssignDlg > m_pDialog; }; short SvxMacroAssignDialog::Execute() @@ -1303,13 +1309,20 @@ short SvxMacroAssignDialog::Execute() SvxMacroAssignDialog::~SvxMacroAssignDialog() { + disposeOnce(); +} + +void SvxMacroAssignDialog::dispose() +{ + m_pDialog.clear(); + VclAbstractDialog::dispose(); } -VclAbstractDialog * AbstractDialogFactory_Impl::CreateSvxMacroAssignDlg( +VclPtr<VclAbstractDialog> AbstractDialogFactory_Impl::CreateSvxMacroAssignDlg( vcl::Window* _pParent, const Reference< XFrame >& _rxDocumentFrame, const bool _bUnoDialogMode, const Reference< XNameReplace >& _rxEvents, const sal_uInt16 _nInitiallySelectedEvent ) { - return new SvxMacroAssignDialog( _pParent, _rxDocumentFrame, _bUnoDialogMode, _rxEvents, _nInitiallySelectedEvent ); + return VclPtr<SvxMacroAssignDialog>::Create( _pParent, _rxDocumentFrame, _bUnoDialogMode, _rxEvents, _nInitiallySelectedEvent ); } // Factories for TabPages @@ -1450,7 +1463,7 @@ GetTabPageRanges AbstractDialogFactory_Impl::GetTabPageRangesFunc( sal_uInt16 nI return nullptr; } -SfxAbstractInsertObjectDialog* AbstractDialogFactory_Impl::CreateInsertObjectDialog( vcl::Window* pParent, const OUString& rCommand, +VclPtr<SfxAbstractInsertObjectDialog> AbstractDialogFactory_Impl::CreateInsertObjectDialog( vcl::Window* pParent, const OUString& rCommand, const Reference < css::embed::XStorage >& xStor, const SvObjectServerList* pList ) { @@ -1463,77 +1476,77 @@ SfxAbstractInsertObjectDialog* AbstractDialogFactory_Impl::CreateInsertObjectDia if ( pDlg ) { pDlg->SetHelpId( OUStringToOString( rCommand, RTL_TEXTENCODING_UTF8 ) ); - return new AbstractInsertObjectDialog_Impl( pDlg ); + return VclPtr<AbstractInsertObjectDialog_Impl>::Create( pDlg ); } return nullptr; } -VclAbstractDialog* AbstractDialogFactory_Impl::CreateEditObjectDialog( const OUString& rCommand, +VclPtr<VclAbstractDialog> AbstractDialogFactory_Impl::CreateEditObjectDialog( const OUString& rCommand, const Reference < css::embed::XEmbeddedObject >& xObj ) { if ( rCommand == ".uno:InsertObjectFloatingFrame" ) { VclPtrInstance<SfxInsertFloatingFrameDialog> pDlg( nullptr, xObj ); pDlg->SetHelpId( OUStringToOString( rCommand, RTL_TEXTENCODING_UTF8 ) ); - return new CuiVclAbstractDialog_Impl( pDlg ); + return VclPtr<CuiVclAbstractDialog_Impl>::Create( pDlg ); } return nullptr; } -SfxAbstractPasteDialog* AbstractDialogFactory_Impl::CreatePasteDialog( vcl::Window* pParent ) +VclPtr<SfxAbstractPasteDialog> AbstractDialogFactory_Impl::CreatePasteDialog( vcl::Window* pParent ) { - return new AbstractPasteDialog_Impl( VclPtr<SvPasteObjectDialog>::Create( pParent ) ); + return VclPtr<AbstractPasteDialog_Impl>::Create( VclPtr<SvPasteObjectDialog>::Create( pParent ) ); } -SfxAbstractLinksDialog* AbstractDialogFactory_Impl::CreateLinksDialog( vcl::Window* pParent, sfx2::LinkManager* pMgr, bool bHTML, sfx2::SvBaseLink* p) +VclPtr<SfxAbstractLinksDialog> AbstractDialogFactory_Impl::CreateLinksDialog( vcl::Window* pParent, sfx2::LinkManager* pMgr, bool bHTML, sfx2::SvBaseLink* p) { VclPtrInstance<SvBaseLinksDlg> pLinkDlg( pParent, pMgr, bHTML ); if ( p ) pLinkDlg->SetActLink(p); - return new AbstractLinksDialog_Impl( pLinkDlg ); + return VclPtr<AbstractLinksDialog_Impl>::Create( pLinkDlg ); } -SfxAbstractTabDialog* AbstractDialogFactory_Impl::CreateSvxFormatCellsDialog( const SfxItemSet* pAttr, SdrModel* pModel, const SdrObject* /*pObj*/ ) +VclPtr<SfxAbstractTabDialog> AbstractDialogFactory_Impl::CreateSvxFormatCellsDialog( const SfxItemSet* pAttr, SdrModel* pModel, const SdrObject* /*pObj*/ ) { - return new CuiAbstractTabDialog_Impl( VclPtr<SvxFormatCellsDialog>::Create( nullptr, pAttr, pModel ) ); + return VclPtr<CuiAbstractTabDialog_Impl>::Create( VclPtr<SvxFormatCellsDialog>::Create( nullptr, pAttr, pModel ) ); } -SvxAbstractSplittTableDialog* AbstractDialogFactory_Impl::CreateSvxSplittTableDialog( vcl::Window* pParent, bool bIsTableVertical, long nMaxVertical ) +VclPtr<SvxAbstractSplittTableDialog> AbstractDialogFactory_Impl::CreateSvxSplittTableDialog( vcl::Window* pParent, bool bIsTableVertical, long nMaxVertical ) { - return new SvxSplitTableDlg( pParent, bIsTableVertical, nMaxVertical, 99 ); + return VclPtr<SvxSplitTableDlg>::Create( pParent, bIsTableVertical, nMaxVertical, 99 ); } -SvxAbstractNewTableDialog* AbstractDialogFactory_Impl::CreateSvxNewTableDialog() +VclPtr<SvxAbstractNewTableDialog> AbstractDialogFactory_Impl::CreateSvxNewTableDialog() { - return new SvxNewTableDialog; + return VclPtr<SvxNewTableDialog>::Create(); } -VclAbstractDialog* AbstractDialogFactory_Impl::CreateOptionsDialog( +VclPtr<VclAbstractDialog> AbstractDialogFactory_Impl::CreateOptionsDialog( vcl::Window* pParent, const OUString& rExtensionId, const OUString& /*rApplicationContext*/ ) { - return new CuiVclAbstractDialog_Impl( VclPtr<OfaTreeOptionsDialog>::Create( pParent, rExtensionId ) ); + return VclPtr<CuiVclAbstractDialog_Impl>::Create( VclPtr<OfaTreeOptionsDialog>::Create( pParent, rExtensionId ) ); } -SvxAbstractInsRowColDlg* AbstractDialogFactory_Impl::CreateSvxInsRowColDlg( vcl::Window* pParent, bool bCol, const OString& sHelpId ) +VclPtr<SvxAbstractInsRowColDlg> AbstractDialogFactory_Impl::CreateSvxInsRowColDlg( vcl::Window* pParent, bool bCol, const OString& sHelpId ) { - return new SvxInsRowColDlg( pParent, bCol, sHelpId ); + return VclPtr<SvxInsRowColDlg>::Create( pParent, bCol, sHelpId ); } -AbstractPasswordToOpenModifyDialog * AbstractDialogFactory_Impl::CreatePasswordToOpenModifyDialog( +VclPtr<AbstractPasswordToOpenModifyDialog> AbstractDialogFactory_Impl::CreatePasswordToOpenModifyDialog( vcl::Window * pParent, sal_uInt16 nMaxPasswdLen, bool bIsPasswordToModify ) { VclPtrInstance<PasswordToOpenModifyDialog> pDlg( pParent, 0, nMaxPasswdLen, bIsPasswordToModify ); - return new AbstractPasswordToOpenModifyDialog_Impl( pDlg ); + return VclPtr<AbstractPasswordToOpenModifyDialog_Impl>::Create( pDlg ); } -AbstractScreenshotAnnotationDlg* AbstractDialogFactory_Impl::CreateScreenshotAnnotationDlg( +VclPtr<AbstractScreenshotAnnotationDlg> AbstractDialogFactory_Impl::CreateScreenshotAnnotationDlg( vcl::Window * pParent, Dialog& rParentDialog) { VclPtrInstance<ScreenshotAnnotationDlg> pDlg(pParent, rParentDialog); - return new AbstractScreenshotAnnotationDlg_Impl(pDlg); + return VclPtr<AbstractScreenshotAnnotationDlg_Impl>::Create(pDlg); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cui/source/factory/dlgfact.hxx b/cui/source/factory/dlgfact.hxx index 510d18e49836..adf568ecaaae 100644 --- a/cui/source/factory/dlgfact.hxx +++ b/cui/source/factory/dlgfact.hxx @@ -82,6 +82,7 @@ class VclAbstractDialog2_Impl : public VclAbstractDialog2 public: explicit VclAbstractDialog2_Impl( Dialog* p ) : m_pDlg( p ) {} virtual ~VclAbstractDialog2_Impl() override; + virtual void dispose() override; virtual void StartExecuteModal( const Link<Dialog&,void>& rEndDialogHdl ) override; virtual long GetResult() override; private: @@ -454,137 +455,140 @@ class AbstractScreenshotAnnotationDlg_Impl : public AbstractScreenshotAnnotation class AbstractDialogFactory_Impl : public SvxAbstractDialogFactory { public: - virtual VclAbstractDialog* CreateVclDialog( vcl::Window* pParent, sal_uInt32 nResId ) override; + virtual VclPtr<VclAbstractDialog> CreateVclDialog( vcl::Window* pParent, sal_uInt32 nResId ) override; - virtual SfxAbstractDialog* CreateSfxDialog( vcl::Window* pParent, + virtual VclPtr<SfxAbstractDialog> CreateSfxDialog( vcl::Window* pParent, const SfxItemSet& rAttr, const SdrView* pView, sal_uInt32 nResId ) override; - virtual SfxAbstractDialog* CreateSfxDialog( vcl::Window* pParent, + virtual VclPtr<SfxAbstractDialog> CreateSfxDialog( vcl::Window* pParent, const SfxItemSet& rAttr, const css::uno::Reference< css::frame::XFrame >& _rxFrame, sal_uInt32 nResId ) override; - virtual VclAbstractDialog* CreateFrameDialog( const css::uno::Reference< css::frame::XFrame >& rxFrame, + virtual VclPtr<VclAbstractDialog> CreateFrameDialog( const css::uno::Reference< css::frame::XFrame >& rxFrame, sal_uInt32 nResId, const OUString& rParameter ) override; - virtual SfxAbstractTabDialog* CreateAutoCorrTabDialog( const SfxItemSet* pAttrSet ) override; - virtual SfxAbstractTabDialog* CreateCustomizeTabDialog( + virtual VclPtr<SfxAbstractTabDialog> CreateAutoCorrTabDialog( const SfxItemSet* pAttrSet ) override; + virtual VclPtr<SfxAbstractTabDialog> CreateCustomizeTabDialog( const SfxItemSet* pAttrSet, const css::uno::Reference< css::frame::XFrame >& xViewFrame ) override; - virtual SfxAbstractTabDialog* CreateTextTabDialog( vcl::Window* pParent, + virtual VclPtr<SfxAbstractTabDialog> CreateTextTabDialog( vcl::Window* pParent, const SfxItemSet* pAttrSet, SdrView* pView ) override; - virtual SfxAbstractTabDialog* CreateTabItemDialog(vcl::Window* pParent, + virtual VclPtr<SfxAbstractTabDialog> CreateTabItemDialog(vcl::Window* pParent, const SfxItemSet& rSet) override; - virtual AbstractSvxCaptionDialog* CreateCaptionDialog( vcl::Window* pParent, + virtual VclPtr<AbstractSvxCaptionDialog> + CreateCaptionDialog( vcl::Window* pParent, const SdrView* pView, SvxAnchorIds nAnchorTypes = SvxAnchorIds::NONE ) override; - virtual AbstractSvxDistributeDialog* CreateSvxDistributeDialog(const SfxItemSet& rAttr) override; - virtual SfxAbstractInsertObjectDialog* CreateInsertObjectDialog( vcl::Window* pParent, const OUString& rCommmand, - const css::uno::Reference < css::embed::XStorage >& xStor, - const SvObjectServerList* pList = nullptr ) override; - virtual VclAbstractDialog* CreateEditObjectDialog( const OUString& rCommmand, - const css::uno::Reference < css::embed::XEmbeddedObject >& xObj ) override; - virtual SfxAbstractPasteDialog* CreatePasteDialog( vcl::Window* pParent ) override; - virtual SfxAbstractLinksDialog* CreateLinksDialog( vcl::Window* pParent, sfx2::LinkManager* pMgr, bool bHTML = false, sfx2::SvBaseLink* p=nullptr ) override; - - virtual AbstractHangulHanjaConversionDialog * CreateHangulHanjaConversionDialog( vcl::Window* _pParent, + virtual VclPtr<AbstractSvxDistributeDialog> + CreateSvxDistributeDialog(const SfxItemSet& rAttr) override; + virtual VclPtr<SfxAbstractInsertObjectDialog> + CreateInsertObjectDialog( vcl::Window* pParent, const OUString& rCommmand, + const css::uno::Reference < css::embed::XStorage >& xStor, + const SvObjectServerList* pList = nullptr ) override; + virtual VclPtr<VclAbstractDialog> CreateEditObjectDialog( const OUString& rCommmand, + const css::uno::Reference < css::embed::XEmbeddedObject >& xObj ) override; + virtual VclPtr<SfxAbstractPasteDialog> CreatePasteDialog( vcl::Window* pParent ) override; + virtual VclPtr<SfxAbstractLinksDialog> CreateLinksDialog( vcl::Window* pParent, sfx2::LinkManager* pMgr, bool bHTML = false, sfx2::SvBaseLink* p=nullptr ) override; + + virtual VclPtr<AbstractHangulHanjaConversionDialog> CreateHangulHanjaConversionDialog( vcl::Window* _pParent, editeng::HangulHanjaConversion::ConversionDirection _ePrimaryDirection ) override; - virtual AbstractThesaurusDialog* CreateThesaurusDialog( vcl::Window*, css::uno::Reference< css::linguistic2::XThesaurus > xThesaurus, + virtual VclPtr<AbstractThesaurusDialog> CreateThesaurusDialog( vcl::Window*, css::uno::Reference< css::linguistic2::XThesaurus > xThesaurus, const OUString &rWord, sal_Int16 nLanguage ) override; - virtual AbstractHyphenWordDialog* CreateHyphenWordDialog( vcl::Window*, + virtual VclPtr<AbstractHyphenWordDialog> CreateHyphenWordDialog( vcl::Window*, const OUString &rWord, LanguageType nLang, css::uno::Reference< css::linguistic2::XHyphenator > &xHyphen, SvxSpellWrapper* pWrapper ) override; - virtual AbstractFmShowColsDialog * CreateFmShowColsDialog() override; - virtual AbstractSvxZoomDialog * CreateSvxZoomDialog( vcl::Window* pParent, + virtual VclPtr<AbstractFmShowColsDialog> CreateFmShowColsDialog() override; + virtual VclPtr<AbstractSvxZoomDialog> CreateSvxZoomDialog( vcl::Window* pParent, const SfxItemSet& rCoreSet) override; //UUUU add for SvxBorderBackgroundDlg - virtual SfxAbstractTabDialog* CreateSvxBorderBackgroundDlg( + virtual VclPtr<SfxAbstractTabDialog> CreateSvxBorderBackgroundDlg( vcl::Window* pParent, const SfxItemSet& rCoreSet, bool bEnableSelector, bool bEnableDrawingLayerFillStyles = false) override; - virtual AbstractSvxTransformTabDialog* CreateSvxTransformTabDialog( vcl::Window* pParent, + virtual VclPtr<AbstractSvxTransformTabDialog> CreateSvxTransformTabDialog( vcl::Window* pParent, const SfxItemSet* pAttr, const SdrView* pView, SvxAnchorIds nAnchorTypes = SvxAnchorIds::NONE) override ; - virtual SfxAbstractTabDialog* CreateSchTransformTabDialog( vcl::Window* pParent, + virtual VclPtr<SfxAbstractTabDialog> CreateSchTransformTabDialog( vcl::Window* pParent, const SfxItemSet* pAttr, const SdrView* pSdrView, bool bSizeTabPage ) override; - virtual AbstractSpellDialog * CreateSvxSpellDialog( + virtual VclPtr<AbstractSpellDialog> CreateSvxSpellDialog( vcl::Window* pParent, SfxBindings* pBindings, svx::SpellDialogChildWindow* pSpellChildWindow ) override; - virtual VclAbstractRefreshableDialog * CreateActualizeProgressDialog( vcl::Window* pParent, GalleryTheme* pThm ) override; - virtual AbstractTitleDialog * CreateTitleDialog( vcl::Window* pParent, + virtual VclPtr<VclAbstractRefreshableDialog> CreateActualizeProgressDialog( vcl::Window* pParent, GalleryTheme* pThm ) override; + virtual VclPtr<AbstractTitleDialog> CreateTitleDialog( vcl::Window* pParent, const OUString& rOldText) override; - virtual AbstractGalleryIdDialog * CreateGalleryIdDialog( vcl::Window* pParent, + virtual VclPtr<AbstractGalleryIdDialog> CreateGalleryIdDialog( vcl::Window* pParent, GalleryTheme* pThm) override; - virtual VclAbstractDialog2 * CreateGalleryThemePropertiesDialog( + virtual VclPtr<VclAbstractDialog2> CreateGalleryThemePropertiesDialog( ExchangeData* pData, SfxItemSet* pItemSet) override; - virtual AbstractURLDlg * CreateURLDialog( vcl::Window* pParent, + virtual VclPtr<AbstractURLDlg> CreateURLDialog( vcl::Window* pParent, const OUString& rURL, const OUString& rAltText, const OUString& rDescription, const OUString& rTarget, const OUString& rName, TargetList& rTargetList ) override; - virtual VclAbstractDialog* CreateSvxSearchAttributeDialog( vcl::Window* pParent, + virtual VclPtr<VclAbstractDialog> CreateSvxSearchAttributeDialog( vcl::Window* pParent, SearchAttrItemList& rLst, const sal_uInt16* pWhRanges) override; - virtual AbstractSvxSearchSimilarityDialog * CreateSvxSearchSimilarityDialog( vcl::Window* pParent, + virtual VclPtr<AbstractSvxSearchSimilarityDialog> CreateSvxSearchSimilarityDialog( vcl::Window* pParent, bool bRelax, sal_uInt16 nOther, sal_uInt16 nShorter, sal_uInt16 nLonger) override; - virtual AbstractSvxJSearchOptionsDialog * CreateSvxJSearchOptionsDialog( vcl::Window* pParent, + virtual VclPtr<AbstractSvxJSearchOptionsDialog> CreateSvxJSearchOptionsDialog( vcl::Window* pParent, const SfxItemSet& rOptionsSet, sal_Int32 nInitialFlags) override; - virtual AbstractFmInputRecordNoDialog * CreateFmInputRecordNoDialog() override; - virtual AbstractSvxNewDictionaryDialog* CreateSvxNewDictionaryDialog( vcl::Window* pParent ) override; - virtual VclAbstractDialog * CreateSvxEditDictionaryDialog( vcl::Window* pParent, + virtual VclPtr<AbstractFmInputRecordNoDialog> CreateFmInputRecordNoDialog() override; + virtual VclPtr<AbstractSvxNewDictionaryDialog> CreateSvxNewDictionaryDialog( vcl::Window* pParent ) override; + virtual VclPtr<VclAbstractDialog> CreateSvxEditDictionaryDialog( vcl::Window* pParent, const OUString& rName) override; - virtual AbstractSvxNameDialog * CreateSvxNameDialog( vcl::Window* pParent, + virtual VclPtr<AbstractSvxNameDialog> CreateSvxNameDialog( vcl::Window* pParent, const OUString& rName, const OUString& rDesc ) override; // #i68101# - virtual AbstractSvxObjectNameDialog* CreateSvxObjectNameDialog(const OUString& rName ) override; - virtual AbstractSvxObjectTitleDescDialog* CreateSvxObjectTitleDescDialog(const OUString& rTitle, const OUString& rDescription) override; + virtual VclPtr<AbstractSvxObjectNameDialog> CreateSvxObjectNameDialog(const OUString& rName ) override; + virtual VclPtr<AbstractSvxObjectTitleDescDialog> CreateSvxObjectTitleDescDialog(const OUString& rTitle, const OUString& rDescription) override; - virtual AbstractSvxMultiPathDialog * CreateSvxMultiPathDialog(vcl::Window* pParent) override; - virtual AbstractSvxMultiPathDialog * CreateSvxPathSelectDialog(vcl::Window* pParent) override; - virtual AbstractSvxHpLinkDlg * CreateSvxHpLinkDlg(vcl::Window* pParent, SfxBindings* pBindings) override; - virtual AbstractFmSearchDialog* CreateFmSearchDialog(vcl::Window* pParent, + virtual VclPtr<AbstractSvxMultiPathDialog> CreateSvxMultiPathDialog(vcl::Window* pParent) override; + virtual VclPtr<AbstractSvxMultiPathDialog> CreateSvxPathSelectDialog(vcl::Window* pParent) override; + virtual VclPtr<AbstractSvxHpLinkDlg> CreateSvxHpLinkDlg(vcl::Window* pParent, SfxBindings* pBindings) override; + virtual VclPtr<AbstractFmSearchDialog> CreateFmSearchDialog(vcl::Window* pParent, const OUString& strInitialText, const ::std::vector< OUString >& _rContexts, sal_Int16 nInitialContext, const Link<FmSearchContext&,sal_uInt32>& lnkContextSupplier) override; - virtual AbstractGraphicFilterDialog * CreateGraphicFilterEmboss(vcl::Window* pParent, + virtual VclPtr<AbstractGraphicFilterDialog> CreateGraphicFilterEmboss(vcl::Window* pParent, const Graphic& rGraphic) override; - virtual AbstractGraphicFilterDialog * CreateGraphicFilterPoster(vcl::Window* pParent, + virtual VclPtr<AbstractGraphicFilterDialog> CreateGraphicFilterPoster(vcl::Window* pParent, const Graphic& rGraphic) override; - virtual AbstractGraphicFilterDialog * CreateGraphicFilterSepia (vcl::Window* pParent, + virtual VclPtr<AbstractGraphicFilterDialog> CreateGraphicFilterSepia (vcl::Window* pParent, const Graphic& rGraphic) override; - virtual AbstractGraphicFilterDialog * CreateGraphicFilterSmooth (vcl::Window* pParent, + virtual VclPtr<AbstractGraphicFilterDialog> CreateGraphicFilterSmooth (vcl::Window* pParent, const Graphic& rGraphic, double nRadius) override; - virtual AbstractGraphicFilterDialog * CreateGraphicFilterSolarize (vcl::Window* pParent, + virtual VclPtr<AbstractGraphicFilterDialog> CreateGraphicFilterSolarize (vcl::Window* pParent, const Graphic& rGraphic) override; - virtual AbstractGraphicFilterDialog * CreateGraphicFilterMosaic (vcl::Window* pParent, + virtual VclPtr<AbstractGraphicFilterDialog> CreateGraphicFilterMosaic (vcl::Window* pParent, const Graphic& rGraphic) override; - virtual AbstractSvxAreaTabDialog* CreateSvxAreaTabDialog( vcl::Window* pParent, + virtual VclPtr<AbstractSvxAreaTabDialog> CreateSvxAreaTabDialog( vcl::Window* pParent, const SfxItemSet* pAttr, SdrModel* pModel, bool bShadow ) override; - virtual SfxAbstractTabDialog* CreateSvxLineTabDialog( vcl::Window* pParent, const SfxItemSet* pAttr, + virtual VclPtr<SfxAbstractTabDialog> CreateSvxLineTabDialog( vcl::Window* pParent, const SfxItemSet* pAttr, SdrModel* pModel, const SdrObject* pObj, bool bHasObj = true ) override; - virtual AbstractSvxPostItDialog* CreateSvxPostItDialog( vcl::Window* pParent, + virtual VclPtr<AbstractSvxPostItDialog> CreateSvxPostItDialog( vcl::Window* pParent, const SfxItemSet& rCoreSet, bool bPrevNext = false ) override; @@ -593,17 +597,17 @@ public: virtual GetTabPageRanges GetTabPageRangesFunc( sal_uInt16 nId ) override; virtual DialogGetRanges GetDialogGetRangesFunc() override; - virtual VclAbstractDialog* CreateSvxScriptOrgDialog( vcl::Window* pParent, const OUString& rLanguage ) override; + virtual VclPtr<VclAbstractDialog> CreateSvxScriptOrgDialog( vcl::Window* pParent, const OUString& rLanguage ) override; - virtual AbstractScriptSelectorDialog* + virtual VclPtr<AbstractScriptSelectorDialog> CreateScriptSelectorDialog( vcl::Window* pParent, const css::uno::Reference< css::frame::XFrame >& _rxFrame ) override; - virtual VclAbstractDialog* CreateScriptErrorDialog(const css::uno::Any& rException) override; + virtual VclPtr<VclAbstractDialog> CreateScriptErrorDialog(const css::uno::Any& rException) override; - virtual VclAbstractDialog* CreateSvxMacroAssignDlg( + virtual VclPtr<VclAbstractDialog> CreateSvxMacroAssignDlg( vcl::Window* _pParent, const css::uno::Reference< css::frame::XFrame >& _rxDocumentFrame, const bool _bUnoDialogMode, @@ -611,20 +615,20 @@ public: const sal_uInt16 _nInitiallySelectedEvent ) override; - virtual SfxAbstractTabDialog* CreateSvxFormatCellsDialog( const SfxItemSet* pAttr, SdrModel* pModel, const SdrObject* pObj ) override; + virtual VclPtr<SfxAbstractTabDialog> CreateSvxFormatCellsDialog( const SfxItemSet* pAttr, SdrModel* pModel, const SdrObject* pObj ) override; - virtual SvxAbstractSplittTableDialog* CreateSvxSplittTableDialog( vcl::Window* pParent, bool bIsTableVertical, long nMaxVertical ) override; + virtual VclPtr<SvxAbstractSplittTableDialog> CreateSvxSplittTableDialog( vcl::Window* pParent, bool bIsTableVertical, long nMaxVertical ) override; - virtual SvxAbstractNewTableDialog* CreateSvxNewTableDialog() override ; + virtual VclPtr<SvxAbstractNewTableDialog> CreateSvxNewTableDialog() override ; - virtual VclAbstractDialog* CreateOptionsDialog( + virtual VclPtr<VclAbstractDialog> CreateOptionsDialog( vcl::Window* pParent, const OUString& rExtensionId, const OUString& rApplicationContext ) override; - virtual SvxAbstractInsRowColDlg* CreateSvxInsRowColDlg( vcl::Window* pParent, bool bCol, const OString& sHelpId ) override; + virtual VclPtr<SvxAbstractInsRowColDlg> CreateSvxInsRowColDlg( vcl::Window* pParent, bool bCol, const OString& sHelpId ) override; - virtual AbstractPasswordToOpenModifyDialog * CreatePasswordToOpenModifyDialog(vcl::Window * pParent, sal_uInt16 nMaxPasswdLen, bool bIsPasswordToModify) override; + virtual VclPtr<AbstractPasswordToOpenModifyDialog> CreatePasswordToOpenModifyDialog(vcl::Window * pParent, sal_uInt16 nMaxPasswdLen, bool bIsPasswordToModify) override; - virtual AbstractScreenshotAnnotationDlg* CreateScreenshotAnnotationDlg(vcl::Window * pParent, Dialog& rParentDialog) override; + virtual VclPtr<AbstractScreenshotAnnotationDlg> CreateScreenshotAnnotationDlg(vcl::Window * pParent, Dialog& rParentDialog) override; }; #endif diff --git a/cui/source/inc/insrc.hxx b/cui/source/inc/insrc.hxx index 9739e28f4c8f..e6fa2a01b94f 100644 --- a/cui/source/inc/insrc.hxx +++ b/cui/source/inc/insrc.hxx @@ -45,6 +45,7 @@ class SvxInsRowColDlg : public SvxAbstractInsRowColDlg public: SvxInsRowColDlg( vcl::Window* pParent, bool bCol, const OString& sHelpId ); virtual ~SvxInsRowColDlg() override; + virtual void dispose() override; virtual short Execute() override; diff --git a/cui/source/inc/newtabledlg.hxx b/cui/source/inc/newtabledlg.hxx index 6dd1de126ae4..91de08ff6f23 100644 --- a/cui/source/inc/newtabledlg.hxx +++ b/cui/source/inc/newtabledlg.hxx @@ -36,6 +36,7 @@ private: public: SvxNewTableDialog(); virtual ~SvxNewTableDialog() override; + virtual void dispose() override; virtual short Execute() override; diff --git a/cui/source/inc/splitcelldlg.hxx b/cui/source/inc/splitcelldlg.hxx index df85c2f73cb8..6ff4d0c9abc5 100644 --- a/cui/source/inc/splitcelldlg.hxx +++ b/cui/source/inc/splitcelldlg.hxx @@ -40,6 +40,7 @@ class SvxSplitTableDlg : public SvxAbstractSplittTableDialog public: SvxSplitTableDlg(vcl::Window *pParent, bool bIsTableVertical, long nMaxVertical, long nMaxHorizontal ); virtual ~SvxSplitTableDlg() override; + virtual void dispose() override; DECL_LINK( ClickHdl, Button *, void ); diff --git a/dbaccess/source/ui/browser/brwctrlr.cxx b/dbaccess/source/ui/browser/brwctrlr.cxx index bf6c989bb040..a09fd63a63d7 100644 --- a/dbaccess/source/ui/browser/brwctrlr.cxx +++ b/dbaccess/source/ui/browser/brwctrlr.cxx @@ -1837,7 +1837,7 @@ void SbaXDataBrowserController::ExecuteSearch() Reference< css::util::XNumberFormatsSupplier > xNFS(::dbtools::getNumberFormats(::dbtools::getConnection(m_xRowSet), true, getORB())); SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create(); - AbstractFmSearchDialog* pDialog = nullptr; + VclPtr<AbstractFmSearchDialog> pDialog; if ( pFact ) { ::std::vector< OUString > aContextNames; @@ -1851,7 +1851,7 @@ void SbaXDataBrowserController::ExecuteSearch() pDialog->SetFoundHandler( LINK( this, SbaXDataBrowserController, OnFoundData ) ); pDialog->SetCanceledNotFoundHdl( LINK( this, SbaXDataBrowserController, OnCanceledNotFound ) ); pDialog->Execute(); - delete pDialog; + pDialog.disposeAndClear(); } // restore the grid's normal operating state diff --git a/dbaccess/source/ui/querydesign/QTableConnection.cxx b/dbaccess/source/ui/querydesign/QTableConnection.cxx index 0f546066be32..4a17b327f923 100644 --- a/dbaccess/source/ui/querydesign/QTableConnection.cxx +++ b/dbaccess/source/ui/querydesign/QTableConnection.cxx @@ -31,7 +31,8 @@ OQueryTableConnection::OQueryTableConnection(OQueryTableView* pContainer, const } OQueryTableConnection::OQueryTableConnection(const OQueryTableConnection& rConn) - : OTableConnection( rConn ) + : VclReferenceBase(), + OTableConnection( rConn ) , m_bVisited(false) { // no own members, so base class functionality is sufficient diff --git a/dbaccess/source/ui/querydesign/TableConnection.cxx b/dbaccess/source/ui/querydesign/TableConnection.cxx index ebf2e179ff96..5cd282fba121 100644 --- a/dbaccess/source/ui/querydesign/TableConnection.cxx +++ b/dbaccess/source/ui/querydesign/TableConnection.cxx @@ -42,9 +42,11 @@ namespace dbaui Show(); } - OTableConnection::OTableConnection( const OTableConnection& _rConn ) : Window(_rConn.m_pParent.get()) - ,m_pData(_rConn.GetData()->NewInstance()) - ,m_pParent(nullptr) + OTableConnection::OTableConnection( const OTableConnection& _rConn ) + : VclReferenceBase() + ,Window(_rConn.m_pParent.get()) + ,m_pData(_rConn.GetData()->NewInstance()) + ,m_pParent(nullptr) { *this = _rConn; } diff --git a/dbaccess/source/ui/relationdesign/RTableConnection.cxx b/dbaccess/source/ui/relationdesign/RTableConnection.cxx index 61834237b388..4b5824a0dbb0 100644 --- a/dbaccess/source/ui/relationdesign/RTableConnection.cxx +++ b/dbaccess/source/ui/relationdesign/RTableConnection.cxx @@ -33,7 +33,7 @@ ORelationTableConnection::ORelationTableConnection( ORelationTableView* pContain } ORelationTableConnection::ORelationTableConnection( const ORelationTableConnection& rConn ) - : OTableConnection( rConn ) + : VclReferenceBase(), OTableConnection( rConn ) { // no own members, thus the base class functionality is enough } diff --git a/editeng/source/misc/hangulhanja.cxx b/editeng/source/misc/hangulhanja.cxx index 41d351af4f8b..e6deb82f51b0 100644 --- a/editeng/source/misc/hangulhanja.cxx +++ b/editeng/source/misc/hangulhanja.cxx @@ -67,7 +67,7 @@ namespace editeng static StringMap m_aRecentlyUsedList; // general - AbstractHangulHanjaConversionDialog* + VclPtr<AbstractHangulHanjaConversionDialog> m_pConversionDialog; // the dialog to display for user interaction VclPtr<vcl::Window> m_pUIParent; // the parent window for any UI we raise Reference< XComponentContext > @@ -235,7 +235,7 @@ namespace editeng sal_Int32 _nOptions, bool _bIsInteractive, HangulHanjaConversion* _pAntiImpl ) - : m_pConversionDialog( nullptr ) + : m_pConversionDialog() , m_pUIParent( _pUIParent ) , m_xContext( rxContext ) , m_aSourceLocale( _rSourceLocale ) @@ -673,7 +673,7 @@ namespace editeng else implUpdateData(); m_pConversionDialog->Execute(); - DELETEZ( m_pConversionDialog ); + m_pConversionDialog.disposeAndClear(); } else { diff --git a/include/editeng/edtdlg.hxx b/include/editeng/edtdlg.hxx index ea0c5ec14bb8..c4be9fe644b4 100644 --- a/include/editeng/edtdlg.hxx +++ b/include/editeng/edtdlg.hxx @@ -84,14 +84,14 @@ class EDITENG_DLLPUBLIC EditAbstractDialogFactory : virtual public VclAbstractDi public: virtual ~EditAbstractDialogFactory() override; // needed for export of vtable static EditAbstractDialogFactory* Create(); - virtual AbstractThesaurusDialog* CreateThesaurusDialog( vcl::Window*, css::uno::Reference< css::linguistic2::XThesaurus > xThesaurus, + virtual VclPtr<AbstractThesaurusDialog> CreateThesaurusDialog( vcl::Window*, css::uno::Reference< css::linguistic2::XThesaurus > xThesaurus, const OUString &rWord, sal_Int16 nLanguage ) = 0; - virtual AbstractHyphenWordDialog* CreateHyphenWordDialog( vcl::Window*, + virtual VclPtr<AbstractHyphenWordDialog> CreateHyphenWordDialog( vcl::Window*, const OUString &rWord, LanguageType nLang, css::uno::Reference< css::linguistic2::XHyphenator > &xHyphen, SvxSpellWrapper* pWrapper ) = 0; - virtual AbstractHangulHanjaConversionDialog * CreateHangulHanjaConversionDialog( vcl::Window* _pParent, + virtual VclPtr<AbstractHangulHanjaConversionDialog> CreateHangulHanjaConversionDialog( vcl::Window* _pParent, editeng::HangulHanjaConversion::ConversionDirection _ePrimaryDirection ) = 0; }; diff --git a/include/sfx2/sfxdlg.hxx b/include/sfx2/sfxdlg.hxx index 071e3f8522c3..6b80bf842474 100644 --- a/include/sfx2/sfxdlg.hxx +++ b/include/sfx2/sfxdlg.hxx @@ -115,31 +115,31 @@ class SFX2_DLLPUBLIC SfxAbstractDialogFactory : virtual public VclAbstractDialog public: virtual ~SfxAbstractDialogFactory() override; // needed for export of vtable static SfxAbstractDialogFactory* Create(); - virtual VclAbstractDialog* CreateFrameDialog( const css::uno::Reference< css::frame::XFrame >& rFrame, sal_uInt32 nResId, const rtl::OUString& rParameter ) = 0; - virtual SfxAbstractTabDialog* CreateAutoCorrTabDialog( const SfxItemSet* pAttrSet ) = 0; - virtual SfxAbstractTabDialog* CreateCustomizeTabDialog( + virtual VclPtr<VclAbstractDialog> CreateFrameDialog( const css::uno::Reference< css::frame::XFrame >& rFrame, sal_uInt32 nResId, const rtl::OUString& rParameter ) = 0; + virtual VclPtr<SfxAbstractTabDialog> CreateAutoCorrTabDialog( const SfxItemSet* pAttrSet ) = 0; + virtual VclPtr<SfxAbstractTabDialog> CreateCustomizeTabDialog( const SfxItemSet* pAttrSet, const css::uno::Reference< css::frame::XFrame >& xViewFrame ) = 0; virtual CreateTabPage GetTabPageCreatorFunc( sal_uInt16 nId ) = 0; virtual GetTabPageRanges GetTabPageRangesFunc( sal_uInt16 nId ) = 0; - virtual SfxAbstractInsertObjectDialog* CreateInsertObjectDialog( vcl::Window* pParent, const OUString& rCommand, + virtual VclPtr<SfxAbstractInsertObjectDialog> CreateInsertObjectDialog( vcl::Window* pParent, const OUString& rCommand, const css::uno::Reference < css::embed::XStorage >& xStor, const SvObjectServerList* pList = nullptr )=0; - virtual VclAbstractDialog* CreateEditObjectDialog( const OUString& rCommand, + virtual VclPtr<VclAbstractDialog> CreateEditObjectDialog( const OUString& rCommand, const css::uno::Reference < css::embed::XEmbeddedObject >& xObj )=0; - virtual SfxAbstractPasteDialog* CreatePasteDialog( vcl::Window* pParent )=0; - virtual SfxAbstractLinksDialog* CreateLinksDialog( vcl::Window* pParent, sfx2::LinkManager* pMgr, bool bHTML=false, sfx2::SvBaseLink* p=nullptr )=0; - virtual VclAbstractDialog * CreateSvxScriptOrgDialog( vcl::Window* pParent, const rtl::OUString& rLanguage ) = 0; + virtual VclPtr<SfxAbstractPasteDialog> CreatePasteDialog( vcl::Window* pParent )=0; + virtual VclPtr<SfxAbstractLinksDialog> CreateLinksDialog( vcl::Window* pParent, sfx2::LinkManager* pMgr, bool bHTML=false, sfx2::SvBaseLink* p=nullptr )=0; + virtual VclPtr<VclAbstractDialog> CreateSvxScriptOrgDialog( vcl::Window* pParent, const rtl::OUString& rLanguage ) = 0; - virtual AbstractScriptSelectorDialog* + virtual VclPtr<AbstractScriptSelectorDialog> CreateScriptSelectorDialog( vcl::Window* pParent, const css::uno::Reference< css::frame::XFrame >& _rxFrame ) = 0; - virtual VclAbstractDialog* CreateScriptErrorDialog( const css::uno::Any& rException ) = 0; + virtual VclPtr<VclAbstractDialog> CreateScriptErrorDialog( const css::uno::Any& rException ) = 0; - virtual VclAbstractDialog* CreateOptionsDialog( + virtual VclPtr<VclAbstractDialog> CreateOptionsDialog( vcl::Window* pParent, const OUString& rExtensionId, const OUString& rApplicationContext ) = 0; }; diff --git a/include/svx/SpellDialogChildWindow.hxx b/include/svx/SpellDialogChildWindow.hxx index 9f1b3f20accf..b3d938c15b07 100644 --- a/include/svx/SpellDialogChildWindow.hxx +++ b/include/svx/SpellDialogChildWindow.hxx @@ -46,7 +46,7 @@ class SVX_DLLPUBLIC SpellDialogChildWindow : public SfxChildWindow { friend class SpellDialog; - std::unique_ptr<AbstractSpellDialog> m_xAbstractSpellDialog; + VclPtr<AbstractSpellDialog> m_xAbstractSpellDialog; public: SpellDialogChildWindow ( vcl::Window*pParent, diff --git a/include/svx/hyperdlg.hxx b/include/svx/hyperdlg.hxx index c42601d6c15a..c0a41a602345 100644 --- a/include/svx/hyperdlg.hxx +++ b/include/svx/hyperdlg.hxx @@ -34,7 +34,7 @@ class AbstractSvxHpLinkDlg; class SVX_DLLPUBLIC SvxHlinkDlgWrapper : public SfxChildWindow { private: - AbstractSvxHpLinkDlg* mpDlg; + VclPtr<AbstractSvxHpLinkDlg> mpDlg; public: SvxHlinkDlgWrapper( vcl::Window*pParent, sal_uInt16 nId, diff --git a/include/svx/svxdlg.hxx b/include/svx/svxdlg.hxx index 20b6b9dfddea..fcbbc43749b4 100644 --- a/include/svx/svxdlg.hxx +++ b/include/svx/svxdlg.hxx @@ -276,135 +276,135 @@ public: virtual ~SvxAbstractDialogFactory() override; - virtual SfxAbstractTabDialog* CreateTextTabDialog( vcl::Window* pParent, + virtual VclPtr<SfxAbstractTabDialog> CreateTextTabDialog( vcl::Window* pParent, const SfxItemSet* pAttrSet, SdrView* pView ) = 0 ; - virtual AbstractSvxCaptionDialog* CreateCaptionDialog( vcl::Window* pParent, + virtual VclPtr<AbstractSvxCaptionDialog> CreateCaptionDialog( vcl::Window* pParent, const SdrView* pView, SvxAnchorIds nAnchorTypes = SvxAnchorIds::NONE ) = 0; - virtual AbstractSvxDistributeDialog* CreateSvxDistributeDialog( + virtual VclPtr<AbstractSvxDistributeDialog> CreateSvxDistributeDialog( const SfxItemSet& rAttr)= 0; - virtual AbstractFmShowColsDialog * CreateFmShowColsDialog() = 0; + virtual VclPtr<AbstractFmShowColsDialog> CreateFmShowColsDialog() = 0; - virtual AbstractSvxZoomDialog * CreateSvxZoomDialog( vcl::Window* pParent, + virtual VclPtr<AbstractSvxZoomDialog> CreateSvxZoomDialog( vcl::Window* pParent, const SfxItemSet& rCoreSet )=0; - virtual AbstractSpellDialog * CreateSvxSpellDialog(vcl::Window* pParent, + virtual VclPtr<AbstractSpellDialog> CreateSvxSpellDialog(vcl::Window* pParent, SfxBindings* pBindings, svx::SpellDialogChildWindow* pSpellChildWindow )=0; - virtual VclAbstractRefreshableDialog * CreateActualizeProgressDialog( vcl::Window* pParent, + virtual VclPtr<VclAbstractRefreshableDialog> CreateActualizeProgressDialog( vcl::Window* pParent, GalleryTheme* pThm ) = 0; - virtual AbstractTitleDialog * CreateTitleDialog( vcl::Window* pParent, + virtual VclPtr<AbstractTitleDialog> CreateTitleDialog( vcl::Window* pParent, const OUString& rOldText ) = 0; - virtual AbstractGalleryIdDialog * CreateGalleryIdDialog( vcl::Window* pParent, + virtual VclPtr<AbstractGalleryIdDialog> CreateGalleryIdDialog( vcl::Window* pParent, GalleryTheme* pThm ) = 0; - virtual VclAbstractDialog2 * CreateGalleryThemePropertiesDialog( + virtual VclPtr<VclAbstractDialog2> CreateGalleryThemePropertiesDialog( ExchangeData* pData, SfxItemSet* pItemSet ) = 0; - virtual AbstractURLDlg * CreateURLDialog( vcl::Window* pParent, + virtual VclPtr<AbstractURLDlg> CreateURLDialog( vcl::Window* pParent, const OUString& rURL, const OUString& rAltText, const OUString& rDescription, const OUString& rTarget, const OUString& rName, TargetList& rTargetList ) = 0; - virtual SfxAbstractTabDialog* CreateTabItemDialog(vcl::Window* pParent, + virtual VclPtr<SfxAbstractTabDialog> CreateTabItemDialog(vcl::Window* pParent, const SfxItemSet& rSet) = 0; - virtual VclAbstractDialog* CreateSvxSearchAttributeDialog( vcl::Window* pParent, + virtual VclPtr<VclAbstractDialog> CreateSvxSearchAttributeDialog( vcl::Window* pParent, SearchAttrItemList& rLst, const sal_uInt16* pWhRanges)=0; - virtual AbstractSvxSearchSimilarityDialog * CreateSvxSearchSimilarityDialog( vcl::Window* pParent, + virtual VclPtr<AbstractSvxSearchSimilarityDialog> CreateSvxSearchSimilarityDialog( vcl::Window* pParent, bool bRelax, sal_uInt16 nOther, sal_uInt16 nShorter, sal_uInt16 nLonger ) = 0; //UUUU add for SvxBorderBackgroundDlg - virtual SfxAbstractTabDialog* CreateSvxBorderBackgroundDlg( + virtual VclPtr<SfxAbstractTabDialog> CreateSvxBorderBackgroundDlg( vcl::Window* pParent, const SfxItemSet& rCoreSet, bool bEnableSelector, bool bEnableDrawingLayerFillStyles = false) = 0; - virtual AbstractSvxTransformTabDialog* CreateSvxTransformTabDialog( vcl::Window* pParent, + virtual VclPtr<AbstractSvxTransformTabDialog> CreateSvxTransformTabDialog( vcl::Window* pParent, const SfxItemSet* pAttr, const SdrView* pView, SvxAnchorIds nAnchorTypes = SvxAnchorIds::NONE) = 0; - virtual SfxAbstractTabDialog* CreateSchTransformTabDialog( vcl::Window* pParent, + virtual VclPtr<SfxAbstractTabDialog> CreateSchTransformTabDialog( vcl::Window* pParent, const SfxItemSet* pAttr, const SdrView* pSdrView, bool bSizeTabPage )=0; - virtual AbstractSvxJSearchOptionsDialog * CreateSvxJSearchOptionsDialog( vcl::Window* pParent, + virtual VclPtr<AbstractSvxJSearchOptionsDialog> CreateSvxJSearchOptionsDialog( vcl::Window* pParent, const SfxItemSet& rOptionsSet, sal_Int32 nInitialFlags )=0; - virtual AbstractFmInputRecordNoDialog * CreateFmInputRecordNoDialog() = 0; - virtual AbstractSvxNewDictionaryDialog* CreateSvxNewDictionaryDialog( vcl::Window* pParent ) = 0; - virtual VclAbstractDialog * CreateSvxEditDictionaryDialog( vcl::Window* pParent, + virtual VclPtr<AbstractFmInputRecordNoDialog> CreateFmInputRecordNoDialog() = 0; + virtual VclPtr<AbstractSvxNewDictionaryDialog> CreateSvxNewDictionaryDialog( vcl::Window* pParent ) = 0; + virtual VclPtr<VclAbstractDialog> CreateSvxEditDictionaryDialog( vcl::Window* pParent, const OUString& rName) = 0; - virtual AbstractSvxNameDialog * CreateSvxNameDialog( vcl::Window* pParent, + virtual VclPtr<AbstractSvxNameDialog> CreateSvxNameDialog( vcl::Window* pParent, const OUString& rName, const OUString& rDesc ) = 0; // #i68101# - virtual AbstractSvxObjectNameDialog* CreateSvxObjectNameDialog(const OUString& rName ) = 0; - virtual AbstractSvxObjectTitleDescDialog* CreateSvxObjectTitleDescDialog(const OUString& rTitle, const OUString& rDescription) = 0; + virtual VclPtr<AbstractSvxObjectNameDialog> CreateSvxObjectNameDialog(const OUString& rName ) = 0; + virtual VclPtr<AbstractSvxObjectTitleDescDialog> CreateSvxObjectTitleDescDialog(const OUString& rTitle, const OUString& rDescription) = 0; - virtual AbstractSvxMultiPathDialog * CreateSvxMultiPathDialog(vcl::Window* pParent) = 0 ; - virtual AbstractSvxMultiPathDialog * CreateSvxPathSelectDialog(vcl::Window* pParent) = 0 ; - virtual AbstractSvxHpLinkDlg * CreateSvxHpLinkDlg(vcl::Window* pParent, SfxBindings* pBindings)=0; - virtual AbstractFmSearchDialog* CreateFmSearchDialog(vcl::Window* pParent, + virtual VclPtr<AbstractSvxMultiPathDialog> CreateSvxMultiPathDialog(vcl::Window* pParent) = 0 ; + virtual VclPtr<AbstractSvxMultiPathDialog> CreateSvxPathSelectDialog(vcl::Window* pParent) = 0 ; + virtual VclPtr<AbstractSvxHpLinkDlg> CreateSvxHpLinkDlg(vcl::Window* pParent, SfxBindings* pBindings)=0; + virtual VclPtr<AbstractFmSearchDialog> CreateFmSearchDialog(vcl::Window* pParent, const OUString& strInitialText, const ::std::vector< OUString >& _rContexts, sal_Int16 nInitialContext, const Link<FmSearchContext&,sal_uInt32>& lnkContextSupplier)=0; - virtual AbstractGraphicFilterDialog * CreateGraphicFilterEmboss(vcl::Window* pParent, + virtual VclPtr<AbstractGraphicFilterDialog> CreateGraphicFilterEmboss(vcl::Window* pParent, const Graphic& rGraphic)=0; - virtual AbstractGraphicFilterDialog * CreateGraphicFilterPoster(vcl::Window* pParent, + virtual VclPtr<AbstractGraphicFilterDialog> CreateGraphicFilterPoster(vcl::Window* pParent, const Graphic& rGraphic)=0; - virtual AbstractGraphicFilterDialog * CreateGraphicFilterSepia (vcl::Window* pParent, + virtual VclPtr<AbstractGraphicFilterDialog> CreateGraphicFilterSepia (vcl::Window* pParent, const Graphic& rGraphic)=0; - virtual AbstractGraphicFilterDialog * CreateGraphicFilterSmooth (vcl::Window* pParent, + virtual VclPtr<AbstractGraphicFilterDialog> CreateGraphicFilterSmooth (vcl::Window* pParent, const Graphic& rGraphic, double nRadius)=0; - virtual AbstractGraphicFilterDialog * CreateGraphicFilterSolarize (vcl::Window* pParent, + virtual VclPtr<AbstractGraphicFilterDialog> CreateGraphicFilterSolarize (vcl::Window* pParent, const Graphic& rGraphic)=0; - virtual AbstractGraphicFilterDialog * CreateGraphicFilterMosaic (vcl::Window* pParent, + virtual VclPtr<AbstractGraphicFilterDialog> CreateGraphicFilterMosaic (vcl::Window* pParent, const Graphic& rGraphic)=0; - virtual AbstractSvxAreaTabDialog* CreateSvxAreaTabDialog( vcl::Window* pParent, + virtual VclPtr<AbstractSvxAreaTabDialog> CreateSvxAreaTabDialog( vcl::Window* pParent, const SfxItemSet* pAttr, SdrModel* pModel, bool bShadow) = 0 ; - virtual SfxAbstractTabDialog* CreateSvxLineTabDialog( vcl::Window* pParent, const SfxItemSet* pAttr, //add forSvxLineTabDialog + virtual VclPtr<SfxAbstractTabDialog> CreateSvxLineTabDialog( vcl::Window* pParent, const SfxItemSet* pAttr, //add forSvxLineTabDialog SdrModel* pModel, const SdrObject* pObj, bool bHasObj = true )=0; - virtual SfxAbstractDialog* CreateSfxDialog( vcl::Window* pParent, + virtual VclPtr<SfxAbstractDialog> CreateSfxDialog( vcl::Window* pParent, const SfxItemSet& rAttr, const SdrView* pView, sal_uInt32 nResId )=0; - virtual SfxAbstractDialog* CreateSfxDialog( vcl::Window* pParent, + virtual VclPtr<SfxAbstractDialog> CreateSfxDialog( vcl::Window* pParent, const SfxItemSet& rAttr, const css::uno::Reference< css::frame::XFrame >& _rxFrame, sal_uInt32 nResId )=0; - virtual AbstractSvxPostItDialog* CreateSvxPostItDialog( vcl::Window* pParent, + virtual VclPtr<AbstractSvxPostItDialog> CreateSvxPostItDialog( vcl::Window* pParent, const SfxItemSet& rCoreSet, bool bPrevNext = false) = 0; - virtual VclAbstractDialog* CreateSvxScriptOrgDialog( vcl::Window* pParent, const OUString& rLanguage ) override = 0; + virtual VclPtr<VclAbstractDialog> CreateSvxScriptOrgDialog( vcl::Window* pParent, const OUString& rLanguage ) override = 0; - virtual DialogGetRanges GetDialogGetRangesFunc() = 0; + virtual DialogGetRanges GetDialogGetRangesFunc() = 0; - virtual AbstractScriptSelectorDialog* + virtual VclPtr<AbstractScriptSelectorDialog> CreateScriptSelectorDialog( vcl::Window* pParent, const css::uno::Reference< css::frame::XFrame >& _rxFrame ) override = 0; - virtual VclAbstractDialog* CreateScriptErrorDialog(const css::uno::Any& rException) override = 0; + virtual VclPtr<VclAbstractDialog> CreateScriptErrorDialog(const css::uno::Any& rException) override = 0; - virtual VclAbstractDialog* CreateSvxMacroAssignDlg( + virtual VclPtr<VclAbstractDialog> CreateSvxMacroAssignDlg( vcl::Window* _pParent, const css::uno::Reference< css::frame::XFrame >& _rxDocumentFrame, const bool _bUnoDialogMode, @@ -412,13 +412,13 @@ public: const sal_uInt16 _nInitiallySelectedEvent ) = 0; - virtual SfxAbstractTabDialog* CreateSvxFormatCellsDialog( const SfxItemSet* pAttr, SdrModel* pModel, const SdrObject* pObj )=0; + virtual VclPtr<SfxAbstractTabDialog> CreateSvxFormatCellsDialog( const SfxItemSet* pAttr, SdrModel* pModel, const SdrObject* pObj )=0; - virtual SvxAbstractSplittTableDialog* CreateSvxSplittTableDialog( vcl::Window* pParent, bool bIsTableVertical, long nMaxVertical )=0; + virtual VclPtr<SvxAbstractSplittTableDialog> CreateSvxSplittTableDialog( vcl::Window* pParent, bool bIsTableVertical, long nMaxVertical )=0; - virtual SvxAbstractNewTableDialog* CreateSvxNewTableDialog() = 0; + virtual VclPtr<SvxAbstractNewTableDialog> CreateSvxNewTableDialog() = 0; - virtual SvxAbstractInsRowColDlg* CreateSvxInsRowColDlg( vcl::Window* pParent, bool bCol, const OString& sHelpId ) = 0; + virtual VclPtr<SvxAbstractInsRowColDlg> CreateSvxInsRowColDlg( vcl::Window* pParent, bool bCol, const OString& sHelpId ) = 0; }; #endif diff --git a/include/vcl/abstdlg.hxx b/include/vcl/abstdlg.hxx index 1db97cc290f5..6b89f95e7613 100644 --- a/include/vcl/abstdlg.hxx +++ b/include/vcl/abstdlg.hxx @@ -22,16 +22,22 @@ #include <rtl/ustring.hxx> #include <tools/link.hxx> #include <vcl/dllapi.h> +#include <vcl/vclreferencebase.hxx> #include <vector> namespace vcl { class Window; } class Dialog; class Bitmap; -class VCL_DLLPUBLIC VclAbstractDialog +/** +* Some things multiple-inherit from VclAbstractDialog and OutputDevice, +* so we need to use virtual inheritance to keep the referencing counting +* OK. +*/ +class VCL_DLLPUBLIC VclAbstractDialog : public virtual VclReferenceBase { public: - virtual ~VclAbstractDialog(); + virtual ~VclAbstractDialog() override; virtual short Execute() = 0; // Screenshot interface @@ -41,10 +47,10 @@ public: virtual OString GetScreenshotId() const { return OString(); }; }; -class VCL_DLLPUBLIC VclAbstractDialog2 +class VCL_DLLPUBLIC VclAbstractDialog2 : public virtual VclReferenceBase { public: - virtual ~VclAbstractDialog2(); + virtual ~VclAbstractDialog2() override; virtual void StartExecuteModal( const Link<Dialog&,void>& rEndDialogHdl ) = 0; virtual long GetResult() = 0; @@ -80,13 +86,13 @@ public: virtual ~VclAbstractDialogFactory(); // needed for export of vtable static VclAbstractDialogFactory* Create(); // The Id is an implementation detail of the factory - virtual VclAbstractDialog* CreateVclDialog(vcl::Window* pParent, sal_uInt32 nId) = 0; + virtual VclPtr<VclAbstractDialog> CreateVclDialog(vcl::Window* pParent, sal_uInt32 nId) = 0; // creates instance of PasswordToOpenModifyDialog from cui - virtual AbstractPasswordToOpenModifyDialog* CreatePasswordToOpenModifyDialog( vcl::Window * pParent, sal_uInt16 nMaxPasswdLen, bool bIsPasswordToModify ) = 0; + virtual VclPtr<AbstractPasswordToOpenModifyDialog> CreatePasswordToOpenModifyDialog( vcl::Window * pParent, sal_uInt16 nMaxPasswdLen, bool bIsPasswordToModify ) = 0; // creates instance of ScreenshotAnnotationDlg from cui - virtual AbstractScreenshotAnnotationDlg* CreateScreenshotAnnotationDlg( + virtual VclPtr<AbstractScreenshotAnnotationDlg> CreateScreenshotAnnotationDlg( vcl::Window* pParent, Dialog& rParentDialog) = 0; }; diff --git a/include/vcl/outdev.hxx b/include/vcl/outdev.hxx index 7342f5266ba1..e21f0cb7647a 100644 --- a/include/vcl/outdev.hxx +++ b/include/vcl/outdev.hxx @@ -313,7 +313,12 @@ namespace vcl { typedef OutputDevice RenderContext; } -class VCL_DLLPUBLIC OutputDevice :public VclReferenceBase +/** +* Some things multiple-inherit from VclAbstractDialog and OutputDevice, +* so we need to use virtual inheritance to keep the referencing counting +* OK. +*/ +class VCL_DLLPUBLIC OutputDevice : public virtual VclReferenceBase { friend class Printer; friend class VirtualDevice; diff --git a/sc/source/ui/app/scdll.cxx b/sc/source/ui/app/scdll.cxx index f001bccaa014..6bec0130bcc3 100644 --- a/sc/source/ui/app/scdll.cxx +++ b/sc/source/ui/app/scdll.cxx @@ -104,6 +104,7 @@ #include "dwfunctr.hxx" #include "acredlin.hxx" #include <o3tl/make_unique.hxx> +#include "scabstdlg.hxx" ScResId::ScResId( sal_uInt16 nId ) : ResId( nId, *SC_MOD()->GetResMgr() ) diff --git a/sc/source/ui/attrdlg/scdlgfact.cxx b/sc/source/ui/attrdlg/scdlgfact.cxx index e2bd4072ff6c..5f61a0ef0b5e 100644 --- a/sc/source/ui/attrdlg/scdlgfact.cxx +++ b/sc/source/ui/attrdlg/scdlgfact.cxx @@ -601,13 +601,13 @@ AbstractScImportAsciiDlg * ScAbstractDialogFactory_Impl::CreateScImportAsciiDlg SvStream* pInStream, ScImportAsciiCall eCall ) { VclPtr<ScImportAsciiDlg> pDlg = VclPtr<ScImportAsciiDlg>::Create( nullptr, aDatName,pInStream, eCall ); - return new AbstractScImportAsciiDlg_Impl( pDlg ); + return VclPtr<AbstractScImportAsciiDlg_Impl>::Create( pDlg ); } AbstractScTextImportOptionsDlg * ScAbstractDialogFactory_Impl::CreateScTextImportOptionsDlg() { VclPtr<ScTextImportOptionsDlg> pDlg = VclPtr<ScTextImportOptionsDlg>::Create(nullptr); - return new AbstractScTextImportOptionsDlg_Impl(pDlg); + return VclPtr<AbstractScTextImportOptionsDlg_Impl>::Create(pDlg); } AbstractScAutoFormatDlg * ScAbstractDialogFactory_Impl::CreateScAutoFormatDlg(vcl::Window* pParent, @@ -616,7 +616,7 @@ AbstractScAutoFormatDlg * ScAbstractDialogFactory_Impl::CreateScAutoFormatDlg(vc ScViewData *pViewData) { VclPtr<ScAutoFormatDlg> pDlg = VclPtr<ScAutoFormatDlg>::Create(pParent, pAutoFormat, pSelFormatData, pViewData); - return new AbstractScAutoFormatDlg_Impl(pDlg); + return VclPtr<AbstractScAutoFormatDlg_Impl>::Create(pDlg); } AbstractScColRowLabelDlg * ScAbstractDialogFactory_Impl::CreateScColRowLabelDlg(vcl::Window* pParent, @@ -624,59 +624,59 @@ AbstractScColRowLabelDlg * ScAbstractDialogFactory_Impl::CreateScColRowLabelDlg bool bRow) { VclPtr<ScColRowLabelDlg> pDlg = VclPtr<ScColRowLabelDlg>::Create( pParent, bCol,bRow ); - return new AbstractScColRowLabelDlg_Impl( pDlg ); + return VclPtr<AbstractScColRowLabelDlg_Impl>::Create( pDlg ); } AbstractScSortWarningDlg* ScAbstractDialogFactory_Impl::CreateScSortWarningDlg( vcl::Window* pParent, const OUString& rExtendText, const OUString& rCurrentText ) { VclPtr<ScSortWarningDlg> pDlg = VclPtr<ScSortWarningDlg>::Create(pParent, rExtendText, rCurrentText ); - return new AbstractScSortWarningDlg_Impl( pDlg ); + return VclPtr<AbstractScSortWarningDlg_Impl>::Create( pDlg ); } AbstractScCondFormatManagerDlg* ScAbstractDialogFactory_Impl::CreateScCondFormatMgrDlg(vcl::Window* pParent, ScDocument* pDoc, const ScConditionalFormatList* pFormatList ) { VclPtr<ScCondFormatManagerDlg> pDlg = VclPtr<ScCondFormatManagerDlg>::Create( pParent, pDoc, pFormatList ); - return new AbstractScCondFormatManagerDlg_Impl( pDlg ); + return VclPtr<AbstractScCondFormatManagerDlg_Impl>::Create( pDlg ); } AbstractScDataPilotDatabaseDlg * ScAbstractDialogFactory_Impl::CreateScDataPilotDatabaseDlg(vcl::Window* pParent) { VclPtr<ScDataPilotDatabaseDlg> pDlg = VclPtr<ScDataPilotDatabaseDlg>::Create( pParent ); - return new AbstractScDataPilotDatabaseDlg_Impl( pDlg ); + return VclPtr<AbstractScDataPilotDatabaseDlg_Impl>::Create( pDlg ); } AbstractScDataPilotSourceTypeDlg* ScAbstractDialogFactory_Impl::CreateScDataPilotSourceTypeDlg( vcl::Window* pParent, bool bEnableExternal) { VclPtr<ScDataPilotSourceTypeDlg> pDlg = VclPtr<ScDataPilotSourceTypeDlg>::Create(pParent, bEnableExternal); - return new AbstractScDataPilotSourceTypeDlg_Impl(pDlg); + return VclPtr<AbstractScDataPilotSourceTypeDlg_Impl>::Create(pDlg); } AbstractScDataPilotServiceDlg* ScAbstractDialogFactory_Impl::CreateScDataPilotServiceDlg( vcl::Window* pParent, const std::vector<OUString>& rServices ) { VclPtr<ScDataPilotServiceDlg> pDlg = VclPtr<ScDataPilotServiceDlg>::Create( pParent, rServices ); - return new AbstractScDataPilotServiceDlg_Impl( pDlg ); + return VclPtr<AbstractScDataPilotServiceDlg_Impl>::Create( pDlg ); } AbstractScDeleteCellDlg* ScAbstractDialogFactory_Impl::CreateScDeleteCellDlg(vcl::Window* pParent, bool bDisallowCellMove) { VclPtr<ScDeleteCellDlg> pDlg = VclPtr<ScDeleteCellDlg>::Create(pParent, bDisallowCellMove); - return new AbstractScDeleteCellDlg_Impl( pDlg ); + return VclPtr<AbstractScDeleteCellDlg_Impl>::Create( pDlg ); } AbstractScDataFormDlg* ScAbstractDialogFactory_Impl::CreateScDataFormDlg(vcl::Window* pParent, ScTabViewShell* pTabViewShell) { VclPtr<ScDataFormDlg> pDlg = VclPtr<ScDataFormDlg>::Create(pParent, pTabViewShell); - return new AbstractScDataFormDlg_Impl(pDlg); + return VclPtr<AbstractScDataFormDlg_Impl>::Create(pDlg); } AbstractScDeleteContentsDlg* ScAbstractDialogFactory_Impl::CreateScDeleteContentsDlg(vcl::Window* pParent) { VclPtr<ScDeleteContentsDlg> pDlg = VclPtr<ScDeleteContentsDlg>::Create(pParent, InsertDeleteFlags::NONE); - return new AbstractScDeleteContentsDlg_Impl( pDlg ); + return VclPtr<AbstractScDeleteContentsDlg_Impl>::Create( pDlg ); } AbstractScFillSeriesDlg* ScAbstractDialogFactory_Impl::CreateScFillSeriesDlg( vcl::Window* pParent, @@ -690,48 +690,48 @@ AbstractScFillSeriesDlg* ScAbstractDialogFactory_Impl::CreateScFillSeriesDlg( vc sal_uInt16 nPossDir) { VclPtr<ScFillSeriesDlg> pDlg = VclPtr<ScFillSeriesDlg>::Create( pParent, rDocument,eFillDir, eFillCmd,eFillDateCmd, aStartStr,fStep,fMax,nPossDir); - return new AbstractScFillSeriesDlg_Impl( pDlg ); + return VclPtr<AbstractScFillSeriesDlg_Impl>::Create( pDlg ); } AbstractScGroupDlg* ScAbstractDialogFactory_Impl::CreateAbstractScGroupDlg( vcl::Window* pParent, bool bUnGroup ) { VclPtr<ScGroupDlg> pDlg = VclPtr<ScGroupDlg>::Create( pParent, bUnGroup, true/*bRows*/); - return new AbstractScGroupDlg_Impl( pDlg ); + return VclPtr<AbstractScGroupDlg_Impl>::Create( pDlg ); } AbstractScInsertCellDlg * ScAbstractDialogFactory_Impl::CreateScInsertCellDlg( vcl::Window* pParent, bool bDisallowCellMove ) { VclPtr<ScInsertCellDlg> pDlg = VclPtr<ScInsertCellDlg>::Create( pParent, bDisallowCellMove); - return new AbstractScInsertCellDlg_Impl( pDlg ); + return VclPtr<AbstractScInsertCellDlg_Impl>::Create( pDlg ); } AbstractScInsertContentsDlg * ScAbstractDialogFactory_Impl::CreateScInsertContentsDlg( vcl::Window* pParent, const OUString* pStrTitle ) { VclPtr<ScInsertContentsDlg> pDlg = VclPtr<ScInsertContentsDlg>::Create(pParent, InsertDeleteFlags::NONE, pStrTitle); - return new AbstractScInsertContentsDlg_Impl( pDlg ); + return VclPtr<AbstractScInsertContentsDlg_Impl>::Create( pDlg ); } AbstractScInsertTableDlg * ScAbstractDialogFactory_Impl::CreateScInsertTableDlg(vcl::Window* pParent, ScViewData& rViewData, SCTAB nTabCount, bool bFromFile) { VclPtr<ScInsertTableDlg> pDlg = VclPtr<ScInsertTableDlg>::Create( pParent, rViewData,nTabCount, bFromFile ); - return new AbstractScInsertTableDlg_Impl( pDlg ); + return VclPtr<AbstractScInsertTableDlg_Impl>::Create( pDlg ); } AbstractScSelEntryDlg * ScAbstractDialogFactory_Impl::CreateScSelEntryDlg ( vcl::Window* pParent, const std::vector<OUString> &rEntryList ) { VclPtr<ScSelEntryDlg> pDlg = VclPtr<ScSelEntryDlg>::Create( pParent, rEntryList ); - return new AbstractScSelEntryDlg_Impl( pDlg ); + return VclPtr<AbstractScSelEntryDlg_Impl>::Create( pDlg ); } AbstractScLinkedAreaDlg * ScAbstractDialogFactory_Impl::CreateScLinkedAreaDlg(vcl::Window* pParent) { VclPtr<ScLinkedAreaDlg> pDlg = VclPtr<ScLinkedAreaDlg>::Create( pParent ); - return new AbstractScLinkedAreaDlg_Impl( pDlg ); + return VclPtr<AbstractScLinkedAreaDlg_Impl>::Create( pDlg ); } AbstractScMetricInputDlg * ScAbstractDialogFactory_Impl::CreateScMetricInputDlg ( vcl::Window* pParent, @@ -745,33 +745,33 @@ AbstractScMetricInputDlg * ScAbstractDialogFactory_Impl::CreateScMetricInputDlg { VclPtr<ScMetricInputDlg> pDlg = VclPtr<ScMetricInputDlg>::Create(pParent, sDialogName, nCurrent ,nDefault, eFUnit, nDecimals, nMaximum , nMinimum , 1, 100); - return new AbstractScMetricInputDlg_Impl( pDlg ); + return VclPtr<AbstractScMetricInputDlg_Impl>::Create( pDlg ); } AbstractScMoveTableDlg * ScAbstractDialogFactory_Impl::CreateScMoveTableDlg(vcl::Window* pParent, const OUString& rDefault) { VclPtr<ScMoveTableDlg> pDlg = VclPtr<ScMoveTableDlg>::Create( pParent, rDefault ); - return new AbstractScMoveTableDlg_Impl( pDlg ); + return VclPtr<AbstractScMoveTableDlg_Impl>::Create( pDlg ); } AbstractScNameCreateDlg * ScAbstractDialogFactory_Impl::CreateScNameCreateDlg(vcl::Window * pParent, sal_uInt16 nFlags) { VclPtr<ScNameCreateDlg> pDlg = VclPtr<ScNameCreateDlg>::Create( pParent, nFlags ); - return new AbstractScNameCreateDlg_Impl( pDlg ); + return VclPtr<AbstractScNameCreateDlg_Impl>::Create( pDlg ); } AbstractScNamePasteDlg * ScAbstractDialogFactory_Impl::CreateScNamePasteDlg ( vcl::Window * pParent, ScDocShell* pShell, bool bInsList ) { VclPtr<ScNamePasteDlg> pDlg = VclPtr<ScNamePasteDlg>::Create( pParent, pShell, bInsList ); - return new AbstractScNamePasteDlg_Impl( pDlg ); + return VclPtr<AbstractScNamePasteDlg_Impl>::Create( pDlg ); } AbstractScPivotFilterDlg * ScAbstractDialogFactory_Impl::CreateScPivotFilterDlg(vcl::Window* pParent, const SfxItemSet& rArgSet, sal_uInt16 nSourceTab) { VclPtr<ScPivotFilterDlg> pDlg = VclPtr<ScPivotFilterDlg>::Create(pParent, rArgSet, nSourceTab); - return new AbstractScPivotFilterDlg_Impl(pDlg); + return VclPtr<AbstractScPivotFilterDlg_Impl>::Create(pDlg); } AbstractScDPFunctionDlg * ScAbstractDialogFactory_Impl::CreateScDPFunctionDlg ( vcl::Window* pParent, @@ -780,7 +780,7 @@ AbstractScDPFunctionDlg * ScAbstractDialogFactory_Impl::CreateScDPFunctionDlg ( const ScPivotFuncData& rFuncData ) { VclPtr<ScDPFunctionDlg> pDlg = VclPtr<ScDPFunctionDlg>::Create( pParent, rLabelVec, rLabelData, rFuncData ); - return new AbstractScDPFunctionDlg_Impl( pDlg ); + return VclPtr<AbstractScDPFunctionDlg_Impl>::Create( pDlg ); } AbstractScDPSubtotalDlg * ScAbstractDialogFactory_Impl::CreateScDPSubtotalDlg ( vcl::Window* pParent, @@ -790,39 +790,39 @@ AbstractScDPSubtotalDlg * ScAbstractDialogFactory_Impl::CreateScDPSubtotalDlg ( const ScDPNameVec& rDataFields ) { VclPtr<ScDPSubtotalDlg> pDlg = VclPtr<ScDPSubtotalDlg>::Create( pParent, rDPObj, rLabelData, rFuncData, rDataFields, true/*bEnableLayout*/ ); - return new AbstractScDPSubtotalDlg_Impl( pDlg ); + return VclPtr<AbstractScDPSubtotalDlg_Impl>::Create( pDlg ); } AbstractScDPNumGroupDlg * ScAbstractDialogFactory_Impl::CreateScDPNumGroupDlg( vcl::Window* pParent, const ScDPNumGroupInfo& rInfo ) { - return new AbstractScDPNumGroupDlg_Impl( VclPtr<ScDPNumGroupDlg>::Create( pParent, rInfo ) ); + return VclPtr<AbstractScDPNumGroupDlg_Impl>::Create( VclPtr<ScDPNumGroupDlg>::Create( pParent, rInfo ) ); } AbstractScDPDateGroupDlg * ScAbstractDialogFactory_Impl::CreateScDPDateGroupDlg( vcl::Window* pParent, const ScDPNumGroupInfo& rInfo, sal_Int32 nDatePart, const Date& rNullDate ) { - return new AbstractScDPDateGroupDlg_Impl( VclPtr<ScDPDateGroupDlg>::Create( pParent, rInfo, nDatePart, rNullDate ) ); + return VclPtr<AbstractScDPDateGroupDlg_Impl>::Create( VclPtr<ScDPDateGroupDlg>::Create( pParent, rInfo, nDatePart, rNullDate ) ); } AbstractScDPShowDetailDlg * ScAbstractDialogFactory_Impl::CreateScDPShowDetailDlg ( vcl::Window* pParent, ScDPObject& rDPObj, sal_uInt16 nOrient ) { - return new AbstractScDPShowDetailDlg_Impl( VclPtr<ScDPShowDetailDlg>::Create( pParent, rDPObj, nOrient ) ); + return VclPtr<AbstractScDPShowDetailDlg_Impl>::Create( VclPtr<ScDPShowDetailDlg>::Create( pParent, rDPObj, nOrient ) ); } AbstractScNewScenarioDlg * ScAbstractDialogFactory_Impl::CreateScNewScenarioDlg(vcl::Window* pParent, const OUString& rName, bool bEdit, bool bSheetProtected) { VclPtr<ScNewScenarioDlg> pDlg = VclPtr<ScNewScenarioDlg>::Create(pParent, rName, bEdit, bSheetProtected); - return new AbstractScNewScenarioDlg_Impl( pDlg ); + return VclPtr<AbstractScNewScenarioDlg_Impl>::Create( pDlg ); } AbstractScShowTabDlg * ScAbstractDialogFactory_Impl::CreateScShowTabDlg(vcl::Window* pParent) { VclPtr<ScShowTabDlg> pDlg = VclPtr<ScShowTabDlg>::Create( pParent); - return new AbstractScShowTabDlg_Impl( pDlg ); + return VclPtr<AbstractScShowTabDlg_Impl>::Create( pDlg ); } AbstractScStringInputDlg * ScAbstractDialogFactory_Impl::CreateScStringInputDlg ( vcl::Window* pParent, @@ -832,7 +832,7 @@ AbstractScStringInputDlg * ScAbstractDialogFactory_Impl::CreateScStringInputDlg const OString& sHelpId, const OString& sEditHelpId ) { VclPtr<ScStringInputDlg> pDlg = VclPtr<ScStringInputDlg>::Create( pParent, rTitle, rEditTitle, rDefault, sHelpId, sEditHelpId ); - return new AbstractScStringInputDlg_Impl( pDlg ); + return VclPtr<AbstractScStringInputDlg_Impl>::Create( pDlg ); } AbstractScTabBgColorDlg * ScAbstractDialogFactory_Impl::CreateScTabBgColorDlg( @@ -842,7 +842,7 @@ AbstractScTabBgColorDlg * ScAbstractDialogFactory_Impl::CreateScTabBgColorDlg( const Color& rDefaultColor) { VclPtr<ScTabBgColorDlg> pDlg = VclPtr<ScTabBgColorDlg>::Create( pParent, rTitle, rTabBgColorNoColorText, rDefaultColor ); - return new AbstractScTabBgColorDlg_Impl( pDlg ); + return VclPtr<AbstractScTabBgColorDlg_Impl>::Create( pDlg ); } AbstractScImportOptionsDlg * ScAbstractDialogFactory_Impl::CreateScImportOptionsDlg ( @@ -854,13 +854,13 @@ AbstractScImportOptionsDlg * ScAbstractDialogFactory_Impl::CreateScImportOptions bool bImport ) { VclPtr<ScImportOptionsDlg> pDlg = VclPtr<ScImportOptionsDlg>::Create( nullptr, bAscii, pOptions,pStrTitle, bMultiByte,bOnlyDbtoolsEncodings, bImport ); - return new AbstractScImportOptionsDlg_Impl( pDlg ); + return VclPtr<AbstractScImportOptionsDlg_Impl>::Create( pDlg ); } SfxAbstractTabDialog * ScAbstractDialogFactory_Impl::CreateScAttrDlg(vcl::Window* pParent, const SfxItemSet* pCellAttrs) { VclPtr<SfxTabDialog> pDlg = VclPtr<ScAttrDlg>::Create(pParent, pCellAttrs); - return new ScAbstractTabDialog_Impl(pDlg); + return VclPtr<ScAbstractTabDialog_Impl>::Create(pDlg); } SfxAbstractTabDialog * ScAbstractDialogFactory_Impl::CreateScHFEditDlg( vcl::Window* pParent, @@ -907,7 +907,7 @@ SfxAbstractTabDialog * ScAbstractDialogFactory_Impl::CreateScHFEditDlg( vcl::Win break; } - return pDlg ? new ScAbstractTabDialog_Impl( pDlg ) : nullptr; + return pDlg ? VclPtr<ScAbstractTabDialog_Impl>::Create( pDlg ) : nullptr; } SfxAbstractTabDialog * ScAbstractDialogFactory_Impl::CreateScStyleDlg( vcl::Window* pParent, @@ -927,34 +927,34 @@ SfxAbstractTabDialog * ScAbstractDialogFactory_Impl::CreateScStyleDlg( vcl::Wind } if ( pDlg ) - return new ScAbstractTabDialog_Impl( pDlg ); + return VclPtr<ScAbstractTabDialog_Impl>::Create( pDlg ); return nullptr; } SfxAbstractTabDialog * ScAbstractDialogFactory_Impl::CreateScSubTotalDlg(vcl::Window* pParent, const SfxItemSet* pArgSet) { VclPtr<SfxTabDialog> pDlg = VclPtr<ScSubTotalDlg>::Create( pParent, pArgSet ); - return new ScAbstractTabDialog_Impl( pDlg ); + return VclPtr<ScAbstractTabDialog_Impl>::Create( pDlg ); } SfxAbstractTabDialog * ScAbstractDialogFactory_Impl::CreateScCharDlg( vcl::Window* pParent, const SfxItemSet* pAttr, const SfxObjectShell* pDocShell) { VclPtr<SfxTabDialog> pDlg = VclPtr<ScCharDlg>::Create(pParent, pAttr, pDocShell); - return new ScAbstractTabDialog_Impl(pDlg); + return VclPtr<ScAbstractTabDialog_Impl>::Create(pDlg); } SfxAbstractTabDialog * ScAbstractDialogFactory_Impl::CreateScParagraphDlg( vcl::Window* pParent, const SfxItemSet* pAttr) { VclPtr<SfxTabDialog> pDlg = VclPtr<ScParagraphDlg>::Create(pParent, pAttr); - return new ScAbstractTabDialog_Impl(pDlg); + return VclPtr<ScAbstractTabDialog_Impl>::Create(pDlg); } SfxAbstractTabDialog * ScAbstractDialogFactory_Impl::CreateScSortDlg(vcl::Window* pParent, const SfxItemSet* pArgSet) { VclPtr<SfxTabDialog> pDlg = VclPtr<ScSortDlg>::Create( pParent, pArgSet ); - return new ScAbstractTabDialog_Impl( pDlg ); + return VclPtr<ScAbstractTabDialog_Impl>::Create( pDlg ); } //------------------ Factories for TabPages-------------------- diff --git a/sc/source/ui/dbgui/csvcontrol.cxx b/sc/source/ui/dbgui/csvcontrol.cxx index 666dc0f33dba..f70aec78e579 100644 --- a/sc/source/ui/dbgui/csvcontrol.cxx +++ b/sc/source/ui/dbgui/csvcontrol.cxx @@ -57,6 +57,7 @@ ScCsvDiff ScCsvLayoutData::GetDiff( const ScCsvLayoutData& rData ) const } ScCsvControl::ScCsvControl( ScCsvControl& rParent ) : + VclReferenceBase(), Control( &rParent, WB_TABSTOP | WB_NODIALOGCONTROL ), mrData( rParent.GetLayoutData() ), mxAccessible( nullptr ), diff --git a/sc/source/ui/docshell/arealink.cxx b/sc/source/ui/docshell/arealink.cxx index e37a237a4eb8..10127c6e4888 100644 --- a/sc/source/ui/docshell/arealink.cxx +++ b/sc/source/ui/docshell/arealink.cxx @@ -49,9 +49,9 @@ struct AreaLink_Impl { ScDocShell* m_pDocSh; - AbstractScLinkedAreaDlg* m_pDialog; + VclPtr<AbstractScLinkedAreaDlg> m_pDialog; - AreaLink_Impl() : m_pDocSh( nullptr ), m_pDialog( nullptr ) {} + AreaLink_Impl() : m_pDocSh( nullptr ), m_pDialog() {} }; @@ -88,7 +88,7 @@ void ScAreaLink::Edit(vcl::Window* pParent, const Link<SvBaseLink&,void>& /* rEn ScAbstractDialogFactory* pFact = ScAbstractDialogFactory::Create(); OSL_ENSURE(pFact, "ScAbstractFactory create fail!"); - AbstractScLinkedAreaDlg* pDlg = pFact->CreateScLinkedAreaDlg(pParent); + VclPtr<AbstractScLinkedAreaDlg> pDlg = pFact->CreateScLinkedAreaDlg(pParent); OSL_ENSURE(pDlg, "Dialog create fail!"); pDlg->InitFromOldLink( aFileName, aFilterName, aOptions, aSourceArea, GetRefreshDelay() ); pImpl->m_pDialog = pDlg; @@ -498,7 +498,7 @@ IMPL_LINK_NOARG(ScAreaLink, AreaEndEditHdl, Dialog&, void) sfx2::MakeLnkName( aNewLinkName, nullptr, aFileName, aSourceArea, &aFilterName ); SetName( aNewLinkName ); } - pImpl->m_pDialog = nullptr; // dialog is deleted with parent + pImpl->m_pDialog.clear(); // dialog is deleted with parent } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/ui/inc/cellsh.hxx b/sc/source/ui/inc/cellsh.hxx index d3fa6a0bc05a..2201e03f0bf5 100644 --- a/sc/source/ui/inc/cellsh.hxx +++ b/sc/source/ui/inc/cellsh.hxx @@ -38,13 +38,15 @@ class AbstractScLinkedAreaDlg; struct CellShell_Impl { TransferableClipboardListener* m_pClipEvtLstnr; - AbstractScLinkedAreaDlg* m_pLinkedDlg; + VclPtr<AbstractScLinkedAreaDlg> m_pLinkedDlg; SfxRequest* m_pRequest; CellShell_Impl() : m_pClipEvtLstnr( nullptr ), - m_pLinkedDlg( nullptr ), + m_pLinkedDlg(), m_pRequest( nullptr ) {} + + ~CellShell_Impl(); }; class ScCellShell: public ScFormatShell diff --git a/sc/source/ui/inc/csvtablebox.hxx b/sc/source/ui/inc/csvtablebox.hxx index abd88e133677..472ab2b51f85 100644 --- a/sc/source/ui/inc/csvtablebox.hxx +++ b/sc/source/ui/inc/csvtablebox.hxx @@ -66,6 +66,9 @@ public: virtual ~ScCsvTableBox() override; virtual void dispose() override; + // workaround VS2013 bug in handling virtual bases + ScCsvTableBox( const ScCsvTableBox& ) = delete; + /** Finishes initialization. Must be called after constructing a new object. */ void Init(); diff --git a/sc/source/ui/inc/redcom.hxx b/sc/source/ui/inc/redcom.hxx index d0c4a145215a..ec9edc77efc7 100644 --- a/sc/source/ui/inc/redcom.hxx +++ b/sc/source/ui/inc/redcom.hxx @@ -32,7 +32,7 @@ private: ScChangeAction *pChangeAction; ScDocShell *pDocShell; OUString aComment; - AbstractSvxPostItDialog* pDlg; + VclPtr<AbstractSvxPostItDialog> pDlg; DECL_LINK( PrevHdl, AbstractSvxPostItDialog&, void ); DECL_LINK( NextHdl, AbstractSvxPostItDialog&, void ); diff --git a/sc/source/ui/inc/validate.hxx b/sc/source/ui/inc/validate.hxx index 58df264167c6..350e32a612c8 100644 --- a/sc/source/ui/inc/validate.hxx +++ b/sc/source/ui/inc/validate.hxx @@ -30,17 +30,24 @@ #include "anyrefdg.hxx" -struct ScRefHandlerCaller{ - virtual ~ScRefHandlerCaller(){} +struct ScRefHandlerCaller : public virtual VclReferenceBase { + virtual ~ScRefHandlerCaller() override {} }; class ScRefHandlerHelper { protected: - ScRefHandlerCaller *m_pHandler; + VclPtr<ScRefHandlerCaller> m_pHandler; +// workaround VS2013 issue with pointers to things that contain virtual base class +#ifdef SAL_W32 + #pragma pack(push, 16) +#endif void (ScRefHandlerCaller::*m_pSetReferenceHdl)( const ScRange& , ScDocument* ); void (ScRefHandlerCaller::*m_pSetActiveHdl)(); void (ScRefHandlerCaller::*m_pRefInputStartPreHdl)( formula::RefEdit* pEdit, formula::RefButton* pButton ); void (ScRefHandlerCaller::*m_pRefInputDonePostHdl)(); +#if defined( SAL_W32) + #pragma pack(pop) +#endif public: typedef void (ScRefHandlerCaller::*PFUNCSETREFHDLTYPE)( const ScRange& , ScDocument* ); diff --git a/sc/source/ui/miscdlgs/redcom.cxx b/sc/source/ui/miscdlgs/redcom.cxx index 39b8316597c7..1831af9daee7 100644 --- a/sc/source/ui/miscdlgs/redcom.cxx +++ b/sc/source/ui/miscdlgs/redcom.cxx @@ -50,7 +50,7 @@ ScRedComDialog::ScRedComDialog( vcl::Window* pParent, const SfxItemSet& rCoreSet ScRedComDialog::~ScRedComDialog() { - delete pDlg; + pDlg.disposeAndClear(); } ScChangeAction *ScRedComDialog::FindPrev(ScChangeAction *pAction) diff --git a/sc/source/ui/view/cellsh.cxx b/sc/source/ui/view/cellsh.cxx index b29beaeba461..a04185d37a87 100644 --- a/sc/source/ui/view/cellsh.cxx +++ b/sc/source/ui/view/cellsh.cxx @@ -96,7 +96,7 @@ ScCellShell::~ScCellShell() pImpl->m_pClipEvtLstnr->release(); } - delete pImpl->m_pLinkedDlg; + pImpl->m_pLinkedDlg.disposeAndClear(); delete pImpl->m_pRequest; } diff --git a/sc/source/ui/view/cellsh1.cxx b/sc/source/ui/view/cellsh1.cxx index e5c3fc206f0e..165b5ef3d0cb 100644 --- a/sc/source/ui/view/cellsh1.cxx +++ b/sc/source/ui/view/cellsh1.cxx @@ -2530,7 +2530,7 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq ) ScAbstractDialogFactory* pFact = ScAbstractDialogFactory::Create(); OSL_ENSURE(pFact, "ScAbstractFactory create fail!"); - delete pImpl->m_pLinkedDlg; + pImpl->m_pLinkedDlg.disposeAndClear(); pImpl->m_pLinkedDlg = pFact->CreateScLinkedAreaDlg(pTabViewShell->GetDialogParent()); OSL_ENSURE(pImpl->m_pLinkedDlg, "Dialog create fail!"); @@ -2986,4 +2986,7 @@ IMPL_LINK_NOARG(ScCellShell, DialogClosed, Dialog&, void) ExecuteExternalSource( sFile, sFilter, sOptions, sSource, nRefresh, *(pImpl->m_pRequest) ); } +CellShell_Impl::~CellShell_Impl() +{ +} /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/ui/view/cellsh4.cxx b/sc/source/ui/view/cellsh4.cxx index 0aa9280f7154..612a6749fc28 100644 --- a/sc/source/ui/view/cellsh4.cxx +++ b/sc/source/ui/view/cellsh4.cxx @@ -27,6 +27,7 @@ #include "inputwin.hxx" #include "document.hxx" #include "sc.hrc" +#include "scabstdlg.hxx" #include <vcl/svapp.hxx> diff --git a/sc/source/ui/view/gridwin.cxx b/sc/source/ui/view/gridwin.cxx index e18f5b1d7acf..4dabdef7c626 100644 --- a/sc/source/ui/view/gridwin.cxx +++ b/sc/source/ui/view/gridwin.cxx @@ -130,6 +130,7 @@ #include "hints.hxx" #include "spellcheckcontext.hxx" #include "uiobject.hxx" +#include "scabstdlg.hxx" #include <svx/sdrpagewindow.hxx> #include <svx/sdr/overlay/overlaymanager.hxx> diff --git a/sd/inc/sdabstdlg.hxx b/sd/inc/sdabstdlg.hxx index ec5ba755fa19..51949e8e7f5f 100644 --- a/sd/inc/sdabstdlg.hxx +++ b/sd/inc/sdabstdlg.hxx @@ -153,33 +153,33 @@ class SdAbstractDialogFactory public: SD_DLLPUBLIC static SdAbstractDialogFactory* Create(); - virtual VclAbstractDialog* CreateBreakDlg(vcl::Window* pWindow, ::sd::DrawView* pDrView, ::sd::DrawDocShell* pShell, sal_uLong nSumActionCount, sal_uLong nObjCount ) = 0; - virtual AbstractCopyDlg* CreateCopyDlg(vcl::Window* pWindow, const SfxItemSet& rInAttrs, const rtl::Reference<XColorList> &pColTab, ::sd::View* pView ) = 0; - virtual AbstractSdCustomShowDlg* CreateSdCustomShowDlg(vcl::Window* pWindow, SdDrawDocument& rDrawDoc) = 0; - virtual SfxAbstractTabDialog* CreateSdTabCharDialog(vcl::Window* pWindow, const SfxItemSet* pAttr, SfxObjectShell* pDocShell) = 0; - virtual SfxAbstractTabDialog* CreateSdTabPageDialog(vcl::Window* pWindow, const SfxItemSet* pAttr, SfxObjectShell* pDocShell, bool bAreaPage) = 0; - virtual AbstractSdModifyFieldDlg* CreateSdModifyFieldDlg(vcl::Window* pWindow, const SvxFieldData* pInField, const SfxItemSet& rSet) = 0; - virtual AbstractSdSnapLineDlg* CreateSdSnapLineDlg(vcl::Window* pParent, const SfxItemSet& rInAttrs, ::sd::View* pView) = 0; - virtual AbstractSdInsertLayerDlg* CreateSdInsertLayerDlg(vcl::Window* pParent, const SfxItemSet& rInAttrs, bool bDeletable, const OUString& aStr) = 0; - virtual AbstractSdInsertPagesObjsDlg* CreateSdInsertPagesObjsDlg(vcl::Window* pParent, const SdDrawDocument* pDoc, SfxMedium* pSfxMedium, const OUString& rFileName) = 0; - virtual AbstractMorphDlg* CreateMorphDlg(vcl::Window* pParent, const SdrObject* pObj1, const SdrObject* pObj2) = 0; - virtual SfxAbstractTabDialog* CreateSdOutlineBulletTabDlg(vcl::Window* pParent, const SfxItemSet* pAttr, ::sd::View* pView) = 0; - virtual SfxAbstractTabDialog* CreateSdParagraphTabDlg(vcl::Window* pWindow, const SfxItemSet* pAttr) = 0; - virtual AbstractSdStartPresDlg* CreateSdStartPresentationDlg( vcl::Window* pWindow, const SfxItemSet& rInAttrs, + virtual VclPtr<VclAbstractDialog> CreateBreakDlg(vcl::Window* pWindow, ::sd::DrawView* pDrView, ::sd::DrawDocShell* pShell, sal_uLong nSumActionCount, sal_uLong nObjCount ) = 0; + virtual VclPtr<AbstractCopyDlg> CreateCopyDlg(vcl::Window* pWindow, const SfxItemSet& rInAttrs, const rtl::Reference<XColorList> &pColTab, ::sd::View* pView ) = 0; + virtual VclPtr<AbstractSdCustomShowDlg> CreateSdCustomShowDlg(vcl::Window* pWindow, SdDrawDocument& rDrawDoc) = 0; + virtual VclPtr<SfxAbstractTabDialog> CreateSdTabCharDialog(vcl::Window* pWindow, const SfxItemSet* pAttr, SfxObjectShell* pDocShell) = 0; + virtual VclPtr<SfxAbstractTabDialog> CreateSdTabPageDialog(vcl::Window* pWindow, const SfxItemSet* pAttr, SfxObjectShell* pDocShell, bool bAreaPage) = 0; + virtual VclPtr<AbstractSdModifyFieldDlg> CreateSdModifyFieldDlg(vcl::Window* pWindow, const SvxFieldData* pInField, const SfxItemSet& rSet) = 0; + virtual VclPtr<AbstractSdSnapLineDlg> CreateSdSnapLineDlg(vcl::Window* pParent, const SfxItemSet& rInAttrs, ::sd::View* pView) = 0; + virtual VclPtr<AbstractSdInsertLayerDlg> CreateSdInsertLayerDlg(vcl::Window* pParent, const SfxItemSet& rInAttrs, bool bDeletable, const OUString& aStr) = 0; + virtual VclPtr<AbstractSdInsertPagesObjsDlg> CreateSdInsertPagesObjsDlg(vcl::Window* pParent, const SdDrawDocument* pDoc, SfxMedium* pSfxMedium, const OUString& rFileName) = 0; + virtual VclPtr<AbstractMorphDlg> CreateMorphDlg(vcl::Window* pParent, const SdrObject* pObj1, const SdrObject* pObj2) = 0; + virtual VclPtr<SfxAbstractTabDialog> CreateSdOutlineBulletTabDlg(vcl::Window* pParent, const SfxItemSet* pAttr, ::sd::View* pView) = 0; + virtual VclPtr<SfxAbstractTabDialog> CreateSdParagraphTabDlg(vcl::Window* pWindow, const SfxItemSet* pAttr) = 0; + virtual VclPtr<AbstractSdStartPresDlg> CreateSdStartPresentationDlg( vcl::Window* pWindow, const SfxItemSet& rInAttrs, const std::vector<OUString> &rPageNames, SdCustomShowList* pCSList ) = 0; - virtual VclAbstractDialog* CreateRemoteDialog( vcl::Window* pWindow ) = 0; - virtual SfxAbstractTabDialog* CreateSdPresLayoutTemplateDlg( SfxObjectShell* pDocSh, vcl::Window* pParent, const SdResId& DlgId, SfxStyleSheetBase& rStyleBase, PresentationObjects ePO, SfxStyleSheetBasePool* pSSPool ) = 0; - virtual AbstractSdPresLayoutDlg* CreateSdPresLayoutDlg( ::sd::DrawDocShell* pDocShell, const SfxItemSet& rInAttrs) = 0; - virtual SfxAbstractTabDialog* CreateSdTabTemplateDlg(vcl::Window* pParent, const SfxObjectShell* pDocShell, SfxStyleSheetBase& rStyleBase, SdrModel* pModel, SdrView* pView) = 0; - virtual SfxAbstractDialog* CreatSdActionDialog(vcl::Window* pParent, const SfxItemSet* pAttr, ::sd::View* pView) = 0; - virtual AbstractSdVectorizeDlg* CreateSdVectorizeDlg( vcl::Window* pParent, const Bitmap& rBmp, ::sd::DrawDocShell* pDocShell ) = 0; - virtual AbstractSdPublishingDlg* CreateSdPublishingDlg( vcl::Window* pWindow, DocumentType eDocType) = 0; - - virtual VclAbstractDialog* CreateMasterLayoutDialog( vcl::Window* pParent, + virtual VclPtr<VclAbstractDialog> CreateRemoteDialog( vcl::Window* pWindow ) = 0; + virtual VclPtr<SfxAbstractTabDialog> CreateSdPresLayoutTemplateDlg( SfxObjectShell* pDocSh, vcl::Window* pParent, const SdResId& DlgId, SfxStyleSheetBase& rStyleBase, PresentationObjects ePO, SfxStyleSheetBasePool* pSSPool ) = 0; + virtual VclPtr<AbstractSdPresLayoutDlg> CreateSdPresLayoutDlg( ::sd::DrawDocShell* pDocShell, const SfxItemSet& rInAttrs) = 0; + virtual VclPtr<SfxAbstractTabDialog> CreateSdTabTemplateDlg(vcl::Window* pParent, const SfxObjectShell* pDocShell, SfxStyleSheetBase& rStyleBase, SdrModel* pModel, SdrView* pView) = 0; + virtual VclPtr<SfxAbstractDialog> CreatSdActionDialog(vcl::Window* pParent, const SfxItemSet* pAttr, ::sd::View* pView) = 0; + virtual VclPtr<AbstractSdVectorizeDlg> CreateSdVectorizeDlg( vcl::Window* pParent, const Bitmap& rBmp, ::sd::DrawDocShell* pDocShell ) = 0; + virtual VclPtr<AbstractSdPublishingDlg> CreateSdPublishingDlg( vcl::Window* pWindow, DocumentType eDocType) = 0; + + virtual VclPtr<VclAbstractDialog> CreateMasterLayoutDialog( vcl::Window* pParent, SdDrawDocument* pDoc, SdPage* ) = 0; - virtual AbstractHeaderFooterDialog* CreateHeaderFooterDialog( sd::ViewShell* pViewShell, + virtual VclPtr<AbstractHeaderFooterDialog> CreateHeaderFooterDialog( sd::ViewShell* pViewShell, vcl::Window* pParent, SdDrawDocument* pDoc, SdPage* pCurrentPage ) = 0; @@ -189,7 +189,7 @@ public: virtual CreateTabPage GetSdOptionsMiscTabPageCreatorFunc() = 0; virtual CreateTabPage GetSdOptionsSnapTabPageCreatorFunc() = 0; - virtual VclAbstractDialog* CreateSdPhotoAlbumDialog( vcl::Window* pWindow, SdDrawDocument* pDoc) = 0; + virtual VclPtr<VclAbstractDialog> CreateSdPhotoAlbumDialog( vcl::Window* pWindow, SdDrawDocument* pDoc) = 0; protected: ~SdAbstractDialogFactory() {} diff --git a/sd/source/ui/dlg/sddlgfact.cxx b/sd/source/ui/dlg/sddlgfact.cxx index d733f6be3321..d2041f2c7554 100644 --- a/sd/source/ui/dlg/sddlgfact.cxx +++ b/sd/source/ui/dlg/sddlgfact.cxx @@ -303,113 +303,113 @@ void AbstractSdPublishingDlg_Impl::GetParameterSequence( css::uno::Sequence< css //-------------- SdAbstractDialogFactory implementation-------------- -VclAbstractDialog * SdAbstractDialogFactory_Impl::CreateBreakDlg( +VclPtr<VclAbstractDialog> SdAbstractDialogFactory_Impl::CreateBreakDlg( vcl::Window* pParent, ::sd::DrawView* pDrView, ::sd::DrawDocShell* pShell, sal_uLong nSumActionCount, sal_uLong nObjCount ) { - return new SdVclAbstractDialog_Impl( VclPtr< ::sd::BreakDlg>::Create( pParent, pDrView, pShell, nSumActionCount, nObjCount ) ); + return VclPtr<SdVclAbstractDialog_Impl>::Create( VclPtr<::sd::BreakDlg>::Create( pParent, pDrView, pShell, nSumActionCount, nObjCount ) ); } -AbstractCopyDlg * SdAbstractDialogFactory_Impl::CreateCopyDlg(vcl::Window* pParent, +VclPtr<AbstractCopyDlg> SdAbstractDialogFactory_Impl::CreateCopyDlg(vcl::Window* pParent, const SfxItemSet& rInAttrs, const rtl::Reference<XColorList> &pColTab, ::sd::View* pView ) { - return new AbstractCopyDlg_Impl( VclPtr< ::sd::CopyDlg>::Create( pParent, rInAttrs, pColTab, pView ) ); + return VclPtr<AbstractCopyDlg_Impl>::Create( VclPtr<::sd::CopyDlg>::Create( pParent, rInAttrs, pColTab, pView ) ); } -AbstractSdCustomShowDlg * SdAbstractDialogFactory_Impl::CreateSdCustomShowDlg(vcl::Window* pParent, SdDrawDocument& rDrawDoc ) +VclPtr<AbstractSdCustomShowDlg> SdAbstractDialogFactory_Impl::CreateSdCustomShowDlg(vcl::Window* pParent, SdDrawDocument& rDrawDoc ) { - return new AbstractSdCustomShowDlg_Impl( VclPtr<SdCustomShowDlg>::Create(pParent, rDrawDoc) ); + return VclPtr<AbstractSdCustomShowDlg_Impl>::Create( VclPtr<SdCustomShowDlg>::Create(pParent, rDrawDoc) ); } -SfxAbstractTabDialog * SdAbstractDialogFactory_Impl::CreateSdTabCharDialog(vcl::Window* pParent, const SfxItemSet* pAttr, SfxObjectShell* pDocShell ) +VclPtr<SfxAbstractTabDialog> SdAbstractDialogFactory_Impl::CreateSdTabCharDialog(vcl::Window* pParent, const SfxItemSet* pAttr, SfxObjectShell* pDocShell ) { - return new SdAbstractTabDialog_Impl( VclPtr<SdCharDlg>::Create(pParent, pAttr, pDocShell) ); + return VclPtr<SdAbstractTabDialog_Impl>::Create( VclPtr<SdCharDlg>::Create(pParent, pAttr, pDocShell) ); } -SfxAbstractTabDialog * SdAbstractDialogFactory_Impl::CreateSdTabPageDialog(vcl::Window* pParent, const SfxItemSet* pAttr, SfxObjectShell* pDocShell, bool bAreaPage ) +VclPtr<SfxAbstractTabDialog> SdAbstractDialogFactory_Impl::CreateSdTabPageDialog(vcl::Window* pParent, const SfxItemSet* pAttr, SfxObjectShell* pDocShell, bool bAreaPage ) { - return new SdAbstractTabDialog_Impl( VclPtr<SdPageDlg>::Create( pDocShell, pParent, pAttr, bAreaPage ) ); + return VclPtr<SdAbstractTabDialog_Impl>::Create( VclPtr<SdPageDlg>::Create( pDocShell, pParent, pAttr, bAreaPage ) ); } -AbstractSdModifyFieldDlg * SdAbstractDialogFactory_Impl::CreateSdModifyFieldDlg( vcl::Window* pParent, const SvxFieldData* pInField, const SfxItemSet& rSet ) +VclPtr<AbstractSdModifyFieldDlg> SdAbstractDialogFactory_Impl::CreateSdModifyFieldDlg( vcl::Window* pParent, const SvxFieldData* pInField, const SfxItemSet& rSet ) { - return new AbstractSdModifyFieldDlg_Impl( VclPtr<SdModifyFieldDlg>::Create( pParent, pInField, rSet ) ); + return VclPtr<AbstractSdModifyFieldDlg_Impl>::Create( VclPtr<SdModifyFieldDlg>::Create( pParent, pInField, rSet ) ); } -AbstractSdSnapLineDlg * SdAbstractDialogFactory_Impl::CreateSdSnapLineDlg( vcl::Window* pParent, const SfxItemSet& rInAttrs, ::sd::View* pView) +VclPtr<AbstractSdSnapLineDlg> SdAbstractDialogFactory_Impl::CreateSdSnapLineDlg( vcl::Window* pParent, const SfxItemSet& rInAttrs, ::sd::View* pView) { - return new AbstractSdSnapLineDlg_Impl( VclPtr<SdSnapLineDlg>::Create( pParent, rInAttrs, pView ) ); + return VclPtr<AbstractSdSnapLineDlg_Impl>::Create( VclPtr<SdSnapLineDlg>::Create( pParent, rInAttrs, pView ) ); } -AbstractSdInsertLayerDlg * SdAbstractDialogFactory_Impl::CreateSdInsertLayerDlg( vcl::Window* pParent, const SfxItemSet& rInAttrs, bool bDeletable, const OUString& aStr ) +VclPtr<AbstractSdInsertLayerDlg> SdAbstractDialogFactory_Impl::CreateSdInsertLayerDlg( vcl::Window* pParent, const SfxItemSet& rInAttrs, bool bDeletable, const OUString& aStr ) { - return new AbstractSdInsertLayerDlg_Impl( VclPtr<SdInsertLayerDlg>::Create( pParent, rInAttrs, bDeletable, aStr ) ); + return VclPtr<AbstractSdInsertLayerDlg_Impl>::Create( VclPtr<SdInsertLayerDlg>::Create( pParent, rInAttrs, bDeletable, aStr ) ); } -AbstractSdInsertPagesObjsDlg * SdAbstractDialogFactory_Impl::CreateSdInsertPagesObjsDlg( vcl::Window* pParent, const SdDrawDocument* pDoc, SfxMedium* pSfxMedium, const OUString& rFileName ) +VclPtr<AbstractSdInsertPagesObjsDlg> SdAbstractDialogFactory_Impl::CreateSdInsertPagesObjsDlg( vcl::Window* pParent, const SdDrawDocument* pDoc, SfxMedium* pSfxMedium, const OUString& rFileName ) { - return new AbstractSdInsertPagesObjsDlg_Impl( VclPtr<SdInsertPagesObjsDlg>::Create( pParent, pDoc, pSfxMedium, rFileName ) ); + return VclPtr<AbstractSdInsertPagesObjsDlg_Impl>::Create( VclPtr<SdInsertPagesObjsDlg>::Create( pParent, pDoc, pSfxMedium, rFileName ) ); } -AbstractMorphDlg * SdAbstractDialogFactory_Impl::CreateMorphDlg( vcl::Window* pParent, const SdrObject* pObj1, const SdrObject* pObj2) +VclPtr<AbstractMorphDlg> SdAbstractDialogFactory_Impl::CreateMorphDlg( vcl::Window* pParent, const SdrObject* pObj1, const SdrObject* pObj2) { - return new AbstractMorphDlg_Impl( VclPtr< ::sd::MorphDlg>::Create( pParent, pObj1, pObj2 ) ); + return VclPtr<AbstractMorphDlg_Impl>::Create( VclPtr<::sd::MorphDlg>::Create( pParent, pObj1, pObj2 ) ); } -SfxAbstractTabDialog * SdAbstractDialogFactory_Impl::CreateSdOutlineBulletTabDlg(vcl::Window* pParent, const SfxItemSet* pAttr, ::sd::View* pView ) +VclPtr<SfxAbstractTabDialog> SdAbstractDialogFactory_Impl::CreateSdOutlineBulletTabDlg(vcl::Window* pParent, const SfxItemSet* pAttr, ::sd::View* pView ) { - return new AbstractBulletDialog_Impl( VclPtr< ::sd::OutlineBulletDlg>::Create( pParent, pAttr, pView ) ); + return VclPtr<AbstractBulletDialog_Impl>::Create( VclPtr<::sd::OutlineBulletDlg>::Create( pParent, pAttr, pView ) ); } -SfxAbstractTabDialog * SdAbstractDialogFactory_Impl::CreateSdParagraphTabDlg(vcl::Window* pParent, const SfxItemSet* pAttr ) +VclPtr<SfxAbstractTabDialog> SdAbstractDialogFactory_Impl::CreateSdParagraphTabDlg(vcl::Window* pParent, const SfxItemSet* pAttr ) { - return new SdAbstractTabDialog_Impl( VclPtr<SdParagraphDlg>::Create( pParent, pAttr ) ); + return VclPtr<SdAbstractTabDialog_Impl>::Create( VclPtr<SdParagraphDlg>::Create( pParent, pAttr ) ); } -AbstractSdStartPresDlg * SdAbstractDialogFactory_Impl::CreateSdStartPresentationDlg( vcl::Window* pParent, const SfxItemSet& rInAttrs, +VclPtr<AbstractSdStartPresDlg> SdAbstractDialogFactory_Impl::CreateSdStartPresentationDlg( vcl::Window* pParent, const SfxItemSet& rInAttrs, const std::vector<OUString> &rPageNames, SdCustomShowList* pCSList ) { - return new AbstractSdStartPresDlg_Impl( VclPtr<SdStartPresentationDlg>::Create( pParent, rInAttrs, rPageNames, pCSList ) ); + return VclPtr<AbstractSdStartPresDlg_Impl>::Create( VclPtr<SdStartPresentationDlg>::Create( pParent, rInAttrs, rPageNames, pCSList ) ); } -VclAbstractDialog * SdAbstractDialogFactory_Impl::CreateRemoteDialog( vcl::Window* pParent ) +VclPtr<VclAbstractDialog> SdAbstractDialogFactory_Impl::CreateRemoteDialog( vcl::Window* pParent ) { - return new SdVclAbstractDialog_Impl( VclPtr< ::sd::RemoteDialog>::Create( pParent ) ); + return VclPtr<SdVclAbstractDialog_Impl>::Create( VclPtr<::sd::RemoteDialog>::Create( pParent ) ); } -SfxAbstractTabDialog * SdAbstractDialogFactory_Impl::CreateSdPresLayoutTemplateDlg( SfxObjectShell* pDocSh, vcl::Window* pParent, const SdResId& DlgId, SfxStyleSheetBase& rStyleBase, PresentationObjects ePO, SfxStyleSheetBasePool* pSSPool ) +VclPtr<SfxAbstractTabDialog> SdAbstractDialogFactory_Impl::CreateSdPresLayoutTemplateDlg( SfxObjectShell* pDocSh, vcl::Window* pParent, const SdResId& DlgId, SfxStyleSheetBase& rStyleBase, PresentationObjects ePO, SfxStyleSheetBasePool* pSSPool ) { - return new SdPresLayoutTemplateDlg_Impl( VclPtr<SdPresLayoutTemplateDlg>::Create( pDocSh, pParent, DlgId, rStyleBase, ePO, pSSPool ) ); + return VclPtr<SdPresLayoutTemplateDlg_Impl>::Create( VclPtr<SdPresLayoutTemplateDlg>::Create( pDocSh, pParent, DlgId, rStyleBase, ePO, pSSPool ) ); } -AbstractSdPresLayoutDlg * SdAbstractDialogFactory_Impl::CreateSdPresLayoutDlg( ::sd::DrawDocShell* pDocShell, const SfxItemSet& rInAttrs) +VclPtr<AbstractSdPresLayoutDlg> SdAbstractDialogFactory_Impl::CreateSdPresLayoutDlg( ::sd::DrawDocShell* pDocShell, const SfxItemSet& rInAttrs) { - return new AbstractSdPresLayoutDlg_Impl( VclPtr<SdPresLayoutDlg>::Create( pDocShell, nullptr, rInAttrs ) ); + return VclPtr<AbstractSdPresLayoutDlg_Impl>::Create( VclPtr<SdPresLayoutDlg>::Create( pDocShell, nullptr, rInAttrs ) ); } -SfxAbstractTabDialog * SdAbstractDialogFactory_Impl::CreateSdTabTemplateDlg(vcl::Window* pParent, const SfxObjectShell* pDocShell, SfxStyleSheetBase& rStyleBase, SdrModel* pModel, SdrView* pView ) +VclPtr<SfxAbstractTabDialog> SdAbstractDialogFactory_Impl::CreateSdTabTemplateDlg(vcl::Window* pParent, const SfxObjectShell* pDocShell, SfxStyleSheetBase& rStyleBase, SdrModel* pModel, SdrView* pView ) { - return new SdAbstractTabDialog_Impl( VclPtr<SdTabTemplateDlg>::Create( pParent, pDocShell, rStyleBase, pModel, pView ) ); + return VclPtr<SdAbstractTabDialog_Impl>::Create( VclPtr<SdTabTemplateDlg>::Create( pParent, pDocShell, rStyleBase, pModel, pView ) ); } -SfxAbstractDialog* SdAbstractDialogFactory_Impl::CreatSdActionDialog(vcl::Window* pParent, const SfxItemSet* pAttr, ::sd::View* pView ) +VclPtr<SfxAbstractDialog> SdAbstractDialogFactory_Impl::CreatSdActionDialog(vcl::Window* pParent, const SfxItemSet* pAttr, ::sd::View* pView ) { - return new SdAbstractSfxDialog_Impl( VclPtr<SdActionDlg>::Create( pParent, pAttr, pView ) ); + return VclPtr<SdAbstractSfxDialog_Impl>::Create( VclPtr<SdActionDlg>::Create( pParent, pAttr, pView ) ); } -AbstractSdVectorizeDlg * SdAbstractDialogFactory_Impl::CreateSdVectorizeDlg( vcl::Window* pParent, const Bitmap& rBmp, ::sd::DrawDocShell* pDocShell ) +VclPtr<AbstractSdVectorizeDlg> SdAbstractDialogFactory_Impl::CreateSdVectorizeDlg( vcl::Window* pParent, const Bitmap& rBmp, ::sd::DrawDocShell* pDocShell ) { - return new AbstractSdVectorizeDlg_Impl( VclPtr<SdVectorizeDlg>::Create( pParent, rBmp, pDocShell ) ); + return VclPtr<AbstractSdVectorizeDlg_Impl>::Create( VclPtr<SdVectorizeDlg>::Create( pParent, rBmp, pDocShell ) ); } -AbstractSdPublishingDlg * SdAbstractDialogFactory_Impl::CreateSdPublishingDlg( vcl::Window* pParent, DocumentType eDocType) +VclPtr<AbstractSdPublishingDlg> SdAbstractDialogFactory_Impl::CreateSdPublishingDlg( vcl::Window* pParent, DocumentType eDocType) { - return new AbstractSdPublishingDlg_Impl( VclPtr<SdPublishingDlg>::Create( pParent, eDocType ) ); + return VclPtr<AbstractSdPublishingDlg_Impl>::Create( VclPtr<SdPublishingDlg>::Create( pParent, eDocType ) ); } // Factories for TabPages @@ -433,21 +433,21 @@ CreateTabPage SdAbstractDialogFactory_Impl::GetSdOptionsSnapTabPageCreatorFunc() return SdTpOptionsSnap::Create; } -VclAbstractDialog* SdAbstractDialogFactory_Impl::CreateMasterLayoutDialog( vcl::Window* pParent, +VclPtr<VclAbstractDialog> SdAbstractDialogFactory_Impl::CreateMasterLayoutDialog( vcl::Window* pParent, SdDrawDocument* pDoc, SdPage* pCurrentPage ) { - return new SdVclAbstractDialog_Impl( VclPtr< ::sd::MasterLayoutDialog>::Create( pParent, pDoc, pCurrentPage )); + return VclPtr<SdVclAbstractDialog_Impl>::Create( VclPtr<::sd::MasterLayoutDialog>::Create( pParent, pDoc, pCurrentPage )); } -AbstractHeaderFooterDialog* SdAbstractDialogFactory_Impl::CreateHeaderFooterDialog( sd::ViewShell* pViewShell, +VclPtr<AbstractHeaderFooterDialog> SdAbstractDialogFactory_Impl::CreateHeaderFooterDialog( sd::ViewShell* pViewShell, vcl::Window* pParent, SdDrawDocument* pDoc, SdPage* pCurrentPage ) { - return new AbstractHeaderFooterDialog_Impl( VclPtr< ::sd::HeaderFooterDialog>::Create( pViewShell, pParent, pDoc, pCurrentPage )); + return VclPtr<AbstractHeaderFooterDialog_Impl>::Create( VclPtr<::sd::HeaderFooterDialog>::Create( pViewShell, pParent, pDoc, pCurrentPage )); } -VclAbstractDialog * SdAbstractDialogFactory_Impl::CreateSdPhotoAlbumDialog( vcl::Window* pParent, SdDrawDocument* pDoc ) +VclPtr<VclAbstractDialog> SdAbstractDialogFactory_Impl::CreateSdPhotoAlbumDialog( vcl::Window* pParent, SdDrawDocument* pDoc ) { - return new SdVclAbstractDialog_Impl( VclPtr< ::sd::SdPhotoAlbumDialog>::Create( pParent, pDoc ) ); + return VclPtr<SdVclAbstractDialog_Impl>::Create( VclPtr<::sd::SdPhotoAlbumDialog>::Create( pParent, pDoc ) ); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sd/source/ui/dlg/sddlgfact.hxx b/sd/source/ui/dlg/sddlgfact.hxx index 9fc9a469d193..f014c8763e27 100644 --- a/sd/source/ui/dlg/sddlgfact.hxx +++ b/sd/source/ui/dlg/sddlgfact.hxx @@ -214,35 +214,35 @@ class SdAbstractDialogFactory_Impl : public SdAbstractDialogFactory public: virtual ~SdAbstractDialogFactory_Impl() {} - virtual VclAbstractDialog* CreateBreakDlg(vcl::Window* pWindow, ::sd::DrawView* pDrView, ::sd::DrawDocShell* pShell, sal_uLong nSumActionCount, sal_uLong nObjCount) override; - virtual AbstractCopyDlg* CreateCopyDlg(vcl::Window* pParent, const SfxItemSet& rInAttrs, const rtl::Reference<XColorList> &pColTab, ::sd::View* pView) override; - virtual AbstractSdCustomShowDlg* CreateSdCustomShowDlg(vcl::Window* pParent, SdDrawDocument& rDrawDoc) override; - virtual SfxAbstractTabDialog* CreateSdTabCharDialog(vcl::Window* pWindow, const SfxItemSet* pAttr, SfxObjectShell* pDocShell) override; - virtual SfxAbstractTabDialog* CreateSdTabPageDialog(vcl::Window* pWindow, const SfxItemSet* pAttr, SfxObjectShell* pDocShell, bool bAreaPage) override; - virtual AbstractSdModifyFieldDlg* CreateSdModifyFieldDlg( vcl::Window* pWindow, const SvxFieldData* pInField, const SfxItemSet& rSet ) override; - virtual AbstractSdSnapLineDlg* CreateSdSnapLineDlg(vcl::Window* pParent, const SfxItemSet& rInAttrs, ::sd::View* pView) override; - virtual AbstractSdInsertLayerDlg* CreateSdInsertLayerDlg(vcl::Window* pParent, const SfxItemSet& rInAttrs, bool bDeletable, const OUString& aStr) override; - virtual AbstractSdInsertPagesObjsDlg* CreateSdInsertPagesObjsDlg(vcl::Window* pParent, const SdDrawDocument* pDoc, SfxMedium* pSfxMedium, const OUString& rFileName ) override; - virtual AbstractMorphDlg* CreateMorphDlg(vcl::Window* pParent, const SdrObject* pObj1, const SdrObject* pObj2) override; - virtual SfxAbstractTabDialog* CreateSdOutlineBulletTabDlg(vcl::Window* pParent, const SfxItemSet* pAttr, ::sd::View* pView) override; - virtual SfxAbstractTabDialog* CreateSdParagraphTabDlg(vcl::Window* pParent, const SfxItemSet* pAttr) override; - virtual AbstractSdStartPresDlg* CreateSdStartPresentationDlg( vcl::Window* pWindow, const SfxItemSet& rInAttrs, + virtual VclPtr<VclAbstractDialog> CreateBreakDlg(vcl::Window* pWindow, ::sd::DrawView* pDrView, ::sd::DrawDocShell* pShell, sal_uLong nSumActionCount, sal_uLong nObjCount) override; + virtual VclPtr<AbstractCopyDlg> CreateCopyDlg(vcl::Window* pParent, const SfxItemSet& rInAttrs, const rtl::Reference<XColorList> &pColTab, ::sd::View* pView) override; + virtual VclPtr<AbstractSdCustomShowDlg> CreateSdCustomShowDlg(vcl::Window* pParent, SdDrawDocument& rDrawDoc) override; + virtual VclPtr<SfxAbstractTabDialog> CreateSdTabCharDialog(vcl::Window* pWindow, const SfxItemSet* pAttr, SfxObjectShell* pDocShell) override; + virtual VclPtr<SfxAbstractTabDialog> CreateSdTabPageDialog(vcl::Window* pWindow, const SfxItemSet* pAttr, SfxObjectShell* pDocShell, bool bAreaPage) override; + virtual VclPtr<AbstractSdModifyFieldDlg> CreateSdModifyFieldDlg( vcl::Window* pWindow, const SvxFieldData* pInField, const SfxItemSet& rSet ) override; + virtual VclPtr<AbstractSdSnapLineDlg> CreateSdSnapLineDlg(vcl::Window* pParent, const SfxItemSet& rInAttrs, ::sd::View* pView) override; + virtual VclPtr<AbstractSdInsertLayerDlg> CreateSdInsertLayerDlg(vcl::Window* pParent, const SfxItemSet& rInAttrs, bool bDeletable, const OUString& aStr) override; + virtual VclPtr<AbstractSdInsertPagesObjsDlg> CreateSdInsertPagesObjsDlg(vcl::Window* pParent, const SdDrawDocument* pDoc, SfxMedium* pSfxMedium, const OUString& rFileName ) override; + virtual VclPtr<AbstractMorphDlg> CreateMorphDlg(vcl::Window* pParent, const SdrObject* pObj1, const SdrObject* pObj2) override; + virtual VclPtr<SfxAbstractTabDialog> CreateSdOutlineBulletTabDlg(vcl::Window* pParent, const SfxItemSet* pAttr, ::sd::View* pView) override; + virtual VclPtr<SfxAbstractTabDialog> CreateSdParagraphTabDlg(vcl::Window* pParent, const SfxItemSet* pAttr) override; + virtual VclPtr<AbstractSdStartPresDlg> CreateSdStartPresentationDlg( vcl::Window* pWindow, const SfxItemSet& rInAttrs, const std::vector<OUString> &rPageNames, SdCustomShowList* pCSList ) override; - virtual VclAbstractDialog* CreateRemoteDialog( vcl::Window* pWindow ) override; // ad for RemoteDialog - virtual SfxAbstractTabDialog* CreateSdPresLayoutTemplateDlg( SfxObjectShell* pDocSh, vcl::Window* pParent, const SdResId& DlgId, SfxStyleSheetBase& rStyleBase, PresentationObjects ePO, SfxStyleSheetBasePool* pSSPool ) override; - virtual AbstractSdPresLayoutDlg* CreateSdPresLayoutDlg( ::sd::DrawDocShell* pDocShell, const SfxItemSet& rInAttrs) override; - virtual SfxAbstractTabDialog* CreateSdTabTemplateDlg(vcl::Window* pParent, const SfxObjectShell* pDocShell, SfxStyleSheetBase& rStyleBase, SdrModel* pModel, SdrView* pView ) override; - virtual SfxAbstractDialog* CreatSdActionDialog(vcl::Window* pParent, const SfxItemSet* pAttr, ::sd::View* pView) override; - virtual AbstractSdVectorizeDlg* CreateSdVectorizeDlg(vcl::Window* pParent, const Bitmap& rBmp, ::sd::DrawDocShell* pDocShell) override; - virtual AbstractSdPublishingDlg* CreateSdPublishingDlg(vcl::Window* pWindow, DocumentType eDocType) override; + virtual VclPtr<VclAbstractDialog> CreateRemoteDialog( vcl::Window* pWindow ) override; // ad for RemoteDialog + virtual VclPtr<SfxAbstractTabDialog> CreateSdPresLayoutTemplateDlg( SfxObjectShell* pDocSh, vcl::Window* pParent, const SdResId& DlgId, SfxStyleSheetBase& rStyleBase, PresentationObjects ePO, SfxStyleSheetBasePool* pSSPool ) override; + virtual VclPtr<AbstractSdPresLayoutDlg> CreateSdPresLayoutDlg( ::sd::DrawDocShell* pDocShell, const SfxItemSet& rInAttrs) override; + virtual VclPtr<SfxAbstractTabDialog> CreateSdTabTemplateDlg(vcl::Window* pParent, const SfxObjectShell* pDocShell, SfxStyleSheetBase& rStyleBase, SdrModel* pModel, SdrView* pView ) override; + virtual VclPtr<SfxAbstractDialog> CreatSdActionDialog(vcl::Window* pParent, const SfxItemSet* pAttr, ::sd::View* pView) override; + virtual VclPtr<AbstractSdVectorizeDlg> CreateSdVectorizeDlg(vcl::Window* pParent, const Bitmap& rBmp, ::sd::DrawDocShell* pDocShell) override; + virtual VclPtr<AbstractSdPublishingDlg> CreateSdPublishingDlg(vcl::Window* pWindow, DocumentType eDocType) override; - virtual VclAbstractDialog* CreateSdPhotoAlbumDialog(vcl::Window* pWindow, SdDrawDocument* pDoc) override; + virtual VclPtr<VclAbstractDialog> CreateSdPhotoAlbumDialog(vcl::Window* pWindow, SdDrawDocument* pDoc) override; - virtual VclAbstractDialog* CreateMasterLayoutDialog( vcl::Window* pParent, + virtual VclPtr<VclAbstractDialog> CreateMasterLayoutDialog( vcl::Window* pParent, SdDrawDocument* pDoc, SdPage* ) override; - virtual AbstractHeaderFooterDialog* CreateHeaderFooterDialog( sd::ViewShell* pViewShell, + virtual VclPtr<AbstractHeaderFooterDialog> CreateHeaderFooterDialog( sd::ViewShell* pViewShell, vcl::Window* pParent, SdDrawDocument* pDoc, SdPage* pCurrentPage ) override; diff --git a/sd/source/ui/docshell/docshel2.cxx b/sd/source/ui/docshell/docshel2.cxx index cb57cba42c9d..ecb95ba5fe16 100644 --- a/sd/source/ui/docshell/docshel2.cxx +++ b/sd/source/ui/docshell/docshel2.cxx @@ -286,7 +286,7 @@ bool DrawDocShell::CheckPageName (vcl::Window* pWin, OUString& rName ) { OUString aDesc( SD_RESSTR( STR_WARN_PAGE_EXISTS ) ); SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create(); - AbstractSvxNameDialog* aNameDlg = pFact ? pFact->CreateSvxNameDialog( pWin, aStrForDlg, aDesc ) : nullptr; + VclPtr<AbstractSvxNameDialog> aNameDlg = pFact ? pFact->CreateSvxNameDialog( pWin, aStrForDlg, aDesc ) : nullptr; if( aNameDlg ) { aNameDlg->SetEditHelpId( HID_SD_NAMEDIALOG_PAGE ); @@ -302,7 +302,7 @@ bool DrawDocShell::CheckPageName (vcl::Window* pWin, OUString& rName ) aNameDlg->GetName( rName ); bIsNameValid = IsNewPageNameValid( rName ); } - delete aNameDlg; + aNameDlg.disposeAndClear(); } } diff --git a/sfx2/source/appl/appserv.cxx b/sfx2/source/appl/appserv.cxx index 6717966125b3..b7da7a4af5e8 100644 --- a/sfx2/source/appl/appserv.cxx +++ b/sfx2/source/appl/appserv.cxx @@ -1332,10 +1332,10 @@ void SfxApplication::OfaExec_Impl( SfxRequest& rReq ) SfxAbstractDialogFactory* pFact = SfxAbstractDialogFactory::Create(); if ( pFact ) { - VclAbstractDialog* pDlg = + VclPtr<VclAbstractDialog> pDlg = pFact->CreateFrameDialog( xFrame, rReq.GetSlot(), sPageURL ); short nRet = pDlg->Execute(); - delete pDlg; + pDlg.disposeAndClear(); SfxViewFrame* pView = SfxViewFrame::GetFirst(); while ( pView ) { @@ -1558,11 +1558,11 @@ void SfxApplication::OfaExec_Impl( SfxRequest& rReq ) OUString aLang( aLanguage ); OSL_TRACE("SfxApplication::OfaExec_Impl: about to create dialog for: %s", OUStringToOString( aLang , RTL_TEXTENCODING_ASCII_US ).pData->buffer); // not sure about the vcl::Window* - VclAbstractDialog* pDlg = pFact->CreateSvxScriptOrgDialog( GetTopWindow(), aLanguage ); + VclPtr<VclAbstractDialog> pDlg = pFact->CreateSvxScriptOrgDialog( GetTopWindow(), aLanguage ); if( pDlg ) { pDlg->Execute(); - delete pDlg; + pDlg.disposeAndClear(); } else { diff --git a/sfx2/source/view/printer.cxx b/sfx2/source/view/printer.cxx index 996ab8a8f0c2..45f98ad99757 100644 --- a/sfx2/source/view/printer.cxx +++ b/sfx2/source/view/printer.cxx @@ -136,6 +136,7 @@ SfxPrinter::SfxPrinter( SfxItemSet* pTheOptions, SfxPrinter::SfxPrinter( const SfxPrinter& rPrinter ) : + VclReferenceBase(), Printer( rPrinter.GetName() ), pOptions( rPrinter.GetOptions().Clone() ), pImpl( new SfxPrinter_Impl ), diff --git a/svx/source/dialog/SpellDialogChildWindow.cxx b/svx/source/dialog/SpellDialogChildWindow.cxx index dc586803f592..6fb2e1f6cff5 100644 --- a/svx/source/dialog/SpellDialogChildWindow.cxx +++ b/svx/source/dialog/SpellDialogChildWindow.cxx @@ -30,20 +30,19 @@ SpellDialogChildWindow::SpellDialogChildWindow ( SfxBindings* pBindings, SfxChildWinInfo* /*pInfo*/) : SfxChildWindow (_pParent, nId) - { - SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create(); DBG_ASSERT(pFact, "SvxAbstractDialogFactory::Create() failed"); - m_xAbstractSpellDialog.reset(pFact->CreateSvxSpellDialog(_pParent, + m_xAbstractSpellDialog = pFact->CreateSvxSpellDialog(_pParent, pBindings, - this )); + this ); SetWindow( m_xAbstractSpellDialog->GetWindow() ); SetHideNotDelete(true); } SpellDialogChildWindow::~SpellDialogChildWindow() { + m_xAbstractSpellDialog.disposeAndClear(); } SfxBindings& SpellDialogChildWindow::GetBindings() const diff --git a/svx/source/gallery2/galbrws1.cxx b/svx/source/gallery2/galbrws1.cxx index e4316449a632..c4e4267c47f2 100644 --- a/svx/source/gallery2/galbrws1.cxx +++ b/svx/source/gallery2/galbrws1.cxx @@ -334,8 +334,8 @@ IMPL_LINK( GalleryBrowser1, EndThemePropertiesDlgHdl, Dialog&, rDialog, void ) IMPL_LINK( GalleryBrowser1, DestroyThemePropertiesDlgHdl, void*, p, void ) { - VclAbstractDialog2* pDialog = static_cast<VclAbstractDialog2*>(p); - delete pDialog; + VclPtr<VclAbstractDialog2> pDialog = static_cast<VclAbstractDialog2*>(p); + pDialog.disposeAndClear(); delete mpThemePropsDlgItemSet; mpThemePropsDlgItemSet = nullptr; } diff --git a/sw/inc/swabstdlg.hxx b/sw/inc/swabstdlg.hxx index a42b520adc76..dec00a930cf3 100644 --- a/sw/inc/swabstdlg.hxx +++ b/sw/inc/swabstdlg.hxx @@ -322,71 +322,71 @@ class SwAbstractDialogFactory public: static SwAbstractDialogFactory* Create(); - virtual SfxAbstractDialog* CreateSfxDialog( vcl::Window* pParent, + virtual VclPtr<SfxAbstractDialog> CreateSfxDialog( vcl::Window* pParent, const SfxItemSet& rAttr, const css::uno::Reference< css::frame::XFrame >& _rxFrame, sal_uInt32 nResId ) = 0; - virtual AbstractSwWordCountFloatDlg* CreateSwWordCountDialog(SfxBindings* pBindings, + virtual VclPtr<AbstractSwWordCountFloatDlg> CreateSwWordCountDialog(SfxBindings* pBindings, SfxChildWindow* pChild, vcl::Window *pParent, SfxChildWinInfo* pInfo) = 0; - virtual AbstractSwInsertAbstractDlg * CreateSwInsertAbstractDlg() = 0; - virtual AbstractSwAsciiFilterDlg* CreateSwAsciiFilterDlg ( SwDocShell& rDocSh, + virtual VclPtr<AbstractSwInsertAbstractDlg> CreateSwInsertAbstractDlg() = 0; + virtual VclPtr<AbstractSwAsciiFilterDlg> CreateSwAsciiFilterDlg ( SwDocShell& rDocSh, SvStream* pStream ) = 0; - virtual VclAbstractDialog * CreateSwInsertBookmarkDlg( vcl::Window *pParent, SwWrtShell &rSh, SfxRequest& rReq ) = 0; + virtual VclPtr<VclAbstractDialog> CreateSwInsertBookmarkDlg( vcl::Window *pParent, SwWrtShell &rSh, SfxRequest& rReq ) = 0; - virtual AbstractSwBreakDlg * CreateSwBreakDlg(vcl::Window *pParent, SwWrtShell &rSh) = 0; - virtual VclAbstractDialog * CreateSwChangeDBDlg(SwView& rVw) = 0; - virtual SfxAbstractTabDialog * CreateSwCharDlg(vcl::Window* pParent, SwView& pVw, const SfxItemSet& rCoreSet, + virtual VclPtr<AbstractSwBreakDlg> CreateSwBreakDlg(vcl::Window *pParent, SwWrtShell &rSh) = 0; + virtual VclPtr<VclAbstractDialog> CreateSwChangeDBDlg(SwView& rVw) = 0; + virtual VclPtr<SfxAbstractTabDialog> CreateSwCharDlg(vcl::Window* pParent, SwView& pVw, const SfxItemSet& rCoreSet, SwCharDlgMode nDialogMode, const OUString* pFormatStr = nullptr) = 0; - virtual AbstractSwConvertTableDlg* CreateSwConvertTableDlg(SwView& rView, bool bToTable) = 0; - virtual VclAbstractDialog * CreateSwCaptionDialog ( vcl::Window *pParent, SwView &rV) = 0; + virtual VclPtr<AbstractSwConvertTableDlg> CreateSwConvertTableDlg(SwView& rView, bool bToTable) = 0; + virtual VclPtr<VclAbstractDialog> CreateSwCaptionDialog ( vcl::Window *pParent, SwView &rV) = 0; - virtual AbstractSwInsertDBColAutoPilot* CreateSwInsertDBColAutoPilot(SwView& rView, + virtual VclPtr<AbstractSwInsertDBColAutoPilot> CreateSwInsertDBColAutoPilot(SwView& rView, css::uno::Reference< css::sdbc::XDataSource> rxSource, css::uno::Reference<css::sdbcx::XColumnsSupplier> xColSupp, const SwDBData& rData) = 0; - virtual SfxAbstractTabDialog * CreateSwFootNoteOptionDlg(vcl::Window *pParent, SwWrtShell &rSh) = 0; + virtual VclPtr<SfxAbstractTabDialog> CreateSwFootNoteOptionDlg(vcl::Window *pParent, SwWrtShell &rSh) = 0; - virtual AbstractDropDownFieldDialog * CreateDropDownFieldDialog(SwWrtShell &rSh, + virtual VclPtr<AbstractDropDownFieldDialog> CreateDropDownFieldDialog(SwWrtShell &rSh, SwField* pField, bool bNextButton) = 0; - virtual SfxAbstractTabDialog* CreateSwEnvDlg ( vcl::Window* pParent, const SfxItemSet& rSet, SwWrtShell* pWrtSh, Printer* pPrt, bool bInsert ) = 0; + virtual VclPtr<SfxAbstractTabDialog> CreateSwEnvDlg ( vcl::Window* pParent, const SfxItemSet& rSet, SwWrtShell* pWrtSh, Printer* pPrt, bool bInsert ) = 0; - virtual AbstractSwLabDlg* CreateSwLabDlg(const SfxItemSet& rSet, + virtual VclPtr<AbstractSwLabDlg> CreateSwLabDlg(const SfxItemSet& rSet, SwDBManager* pDBManager, bool bLabel) = 0; virtual SwLabDlgMethod GetSwLabDlgStaticMethod () =0; - virtual SfxAbstractTabDialog* CreateSwParaDlg ( vcl::Window *pParent, + virtual VclPtr<SfxAbstractTabDialog> CreateSwParaDlg ( vcl::Window *pParent, SwView& rVw, const SfxItemSet& rCoreSet, bool bDraw, const OString& sDefPage = OString() ) = 0; - virtual AbstractSwSelGlossaryDlg * CreateSwSelGlossaryDlg(const OUString &rShortName) = 0; + virtual VclPtr<AbstractSwSelGlossaryDlg> CreateSwSelGlossaryDlg(const OUString &rShortName) = 0; - virtual VclAbstractDialog * CreateVclAbstractDialog ( vcl::Window * pParent, SwWrtShell &rSh, int nResId ) = 0; - virtual AbstractSplitTableDialog * CreateSplitTableDialog ( vcl::Window * pParent, SwWrtShell &rSh ) = 0; + virtual VclPtr<VclAbstractDialog> CreateVclAbstractDialog ( vcl::Window * pParent, SwWrtShell &rSh, int nResId ) = 0; + virtual VclPtr<AbstractSplitTableDialog> CreateSplitTableDialog ( vcl::Window * pParent, SwWrtShell &rSh ) = 0; - virtual AbstractSwAutoFormatDlg * CreateSwAutoFormatDlg( vcl::Window* pParent, SwWrtShell* pShell, + virtual VclPtr<AbstractSwAutoFormatDlg> CreateSwAutoFormatDlg( vcl::Window* pParent, SwWrtShell* pShell, bool bSetAutoFormat = true, const SwTableAutoFormat* pSelFormat = nullptr ) = 0; - virtual SfxAbstractDialog * CreateSwBorderDlg ( vcl::Window* pParent, SfxItemSet& rSet, SwBorderModes nType ) = 0; - virtual SfxAbstractDialog * CreateSwWrapDlg ( vcl::Window* pParent, SfxItemSet& rSet, SwWrtShell* pSh ) = 0; + virtual VclPtr<SfxAbstractDialog> CreateSwBorderDlg ( vcl::Window* pParent, SfxItemSet& rSet, SwBorderModes nType ) = 0; + virtual VclPtr<SfxAbstractDialog> CreateSwWrapDlg ( vcl::Window* pParent, SfxItemSet& rSet, SwWrtShell* pSh ) = 0; - virtual VclAbstractDialog * CreateSwTableWidthDlg(vcl::Window *pParent, SwTableFUNC &rFnc) = 0; - virtual SfxAbstractTabDialog* CreateSwTableTabDlg(vcl::Window* pParent, SfxItemPool& Pool, + virtual VclPtr<VclAbstractDialog> CreateSwTableWidthDlg(vcl::Window *pParent, SwTableFUNC &rFnc) = 0; + virtual VclPtr<SfxAbstractTabDialog> CreateSwTableTabDlg(vcl::Window* pParent, SfxItemPool& Pool, const SfxItemSet* pItemSet, SwWrtShell* pSh) = 0; - virtual AbstractSwFieldDlg * CreateSwFieldDlg(SfxBindings* pB, SwChildWinWrapper* pCW, vcl::Window *pParent) = 0; - virtual SfxAbstractDialog* CreateSwFieldEditDlg ( SwView& rVw ) = 0; - virtual AbstractSwRenameXNamedDlg * CreateSwRenameXNamedDlg(vcl::Window* pParent, + virtual VclPtr<AbstractSwFieldDlg> CreateSwFieldDlg(SfxBindings* pB, SwChildWinWrapper* pCW, vcl::Window *pParent) = 0; + virtual VclPtr<SfxAbstractDialog> CreateSwFieldEditDlg ( SwView& rVw ) = 0; + virtual VclPtr<AbstractSwRenameXNamedDlg> CreateSwRenameXNamedDlg(vcl::Window* pParent, css::uno::Reference< css::container::XNamed > & xNamed, css::uno::Reference< css::container::XNameAccess > & xNameAccess) = 0; - virtual AbstractSwModalRedlineAcceptDlg * CreateSwModalRedlineAcceptDlg(vcl::Window *pParent) = 0; + virtual VclPtr<AbstractSwModalRedlineAcceptDlg> CreateSwModalRedlineAcceptDlg(vcl::Window *pParent) = 0; - virtual VclAbstractDialog* CreateTableMergeDialog( vcl::Window* pParent, bool& rWithPrev ) = 0; - virtual SfxAbstractTabDialog* CreateFrameTabDialog(const OUString &rDialogType, + virtual VclPtr<VclAbstractDialog> CreateTableMergeDialog( vcl::Window* pParent, bool& rWithPrev ) = 0; + virtual VclPtr<SfxAbstractTabDialog> CreateFrameTabDialog(const OUString &rDialogType, SfxViewFrame *pFrame, vcl::Window *pParent, const SfxItemSet& rCoreSet, bool bNewFrame = true, @@ -394,59 +394,59 @@ public: /// @param nSlot /// Identifies optional Slot by which the creation of the Template (Style) dialog is triggered. /// Currently used, if nRegion == SfxStyleFamily::Page in order to activate certain dialog pane - virtual SfxAbstractApplyTabDialog* CreateTemplateDialog(vcl::Window* pParent, + virtual VclPtr<SfxAbstractApplyTabDialog> CreateTemplateDialog(vcl::Window* pParent, SfxStyleSheetBase& rBase, SfxStyleFamily nRegion, const OString& sPage, SwWrtShell* pActShell, bool bNew = false) = 0; - virtual AbstractGlossaryDlg* CreateGlossaryDlg(SfxViewFrame* pViewFrame, + virtual VclPtr<AbstractGlossaryDlg> CreateGlossaryDlg(SfxViewFrame* pViewFrame, SwGlossaryHdl* pGlosHdl, SwWrtShell *pWrtShell) = 0; - virtual AbstractFieldInputDlg* CreateFieldInputDlg(vcl::Window *pParent, + virtual VclPtr<AbstractFieldInputDlg> CreateFieldInputDlg(vcl::Window *pParent, SwWrtShell &rSh, SwField* pField, bool bNextButton) = 0; - virtual AbstractInsFootNoteDlg* CreateInsFootNoteDlg(vcl::Window * pParent, + virtual VclPtr<AbstractInsFootNoteDlg> CreateInsFootNoteDlg(vcl::Window * pParent, SwWrtShell &rSh, bool bEd = false) = 0; - virtual VclAbstractDialog* CreateTitlePageDlg ( vcl::Window * pParent ) = 0; - virtual VclAbstractDialog * CreateVclSwViewDialog(SwView& rView) = 0; - virtual AbstractInsTableDlg* CreateInsTableDlg(SwView& rView) = 0; - virtual AbstractJavaEditDialog* CreateJavaEditDialog(vcl::Window* pParent, + virtual VclPtr<VclAbstractDialog> CreateTitlePageDlg ( vcl::Window * pParent ) = 0; + virtual VclPtr<VclAbstractDialog> CreateVclSwViewDialog(SwView& rView) = 0; + virtual VclPtr<AbstractInsTableDlg> CreateInsTableDlg(SwView& rView) = 0; + virtual VclPtr<AbstractJavaEditDialog> CreateJavaEditDialog(vcl::Window* pParent, SwWrtShell* pWrtSh) = 0; - virtual AbstractMailMergeDlg* CreateMailMergeDlg( + virtual VclPtr<AbstractMailMergeDlg> CreateMailMergeDlg( vcl::Window* pParent, SwWrtShell& rSh, const OUString& rSourceName, const OUString& rTableName, sal_Int32 nCommandType, const css::uno::Reference< css::sdbc::XConnection>& xConnection ) = 0; - virtual AbstractMailMergeCreateFromDlg* CreateMailMergeCreateFromDlg(vcl::Window* pParent) = 0; - virtual AbstractMailMergeFieldConnectionsDlg* CreateMailMergeFieldConnectionsDlg(vcl::Window* pParent) = 0; - virtual VclAbstractDialog* CreateMultiTOXMarkDlg(vcl::Window* pParent, SwTOXMgr &rTOXMgr) = 0; - virtual SfxAbstractTabDialog* CreateSwTabDialog( int nResId, + virtual VclPtr<AbstractMailMergeCreateFromDlg> CreateMailMergeCreateFromDlg(vcl::Window* pParent) = 0; + virtual VclPtr<AbstractMailMergeFieldConnectionsDlg> CreateMailMergeFieldConnectionsDlg(vcl::Window* pParent) = 0; + virtual VclPtr<VclAbstractDialog> CreateMultiTOXMarkDlg(vcl::Window* pParent, SwTOXMgr &rTOXMgr) = 0; + virtual VclPtr<SfxAbstractTabDialog> CreateSwTabDialog( int nResId, vcl::Window* pParent, const SfxItemSet* pSwItemSet, SwWrtShell &) = 0; - virtual AbstractMultiTOXTabDialog* CreateMultiTOXTabDialog( + virtual VclPtr<AbstractMultiTOXTabDialog> CreateMultiTOXTabDialog( vcl::Window* pParent, const SfxItemSet& rSet, SwWrtShell &rShell, SwTOXBase* pCurTOX, bool bGlobal) = 0; - virtual AbstractEditRegionDlg* CreateEditRegionDlg(vcl::Window* pParent, SwWrtShell& rWrtSh) = 0; - virtual AbstractInsertSectionTabDialog* CreateInsertSectionTabDialog( + virtual VclPtr<AbstractEditRegionDlg> CreateEditRegionDlg(vcl::Window* pParent, SwWrtShell& rWrtSh) = 0; + virtual VclPtr<AbstractInsertSectionTabDialog> CreateInsertSectionTabDialog( vcl::Window* pParent, const SfxItemSet& rSet, SwWrtShell& rSh) = 0; - virtual AbstractMarkFloatDlg* CreateIndexMarkFloatDlg( + virtual VclPtr<AbstractMarkFloatDlg> CreateIndexMarkFloatDlg( SfxBindings* pBindings, SfxChildWindow* pChild, vcl::Window *pParent, SfxChildWinInfo* pInfo) = 0; - virtual AbstractMarkFloatDlg* CreateAuthMarkFloatDlg( + virtual VclPtr<AbstractMarkFloatDlg> CreateAuthMarkFloatDlg( SfxBindings* pBindings, SfxChildWindow* pChild, vcl::Window *pParent, SfxChildWinInfo* pInfo) = 0; - virtual VclAbstractDialog * CreateIndexMarkModalDlg( + virtual VclPtr<VclAbstractDialog> CreateIndexMarkModalDlg( vcl::Window *pParent, SwWrtShell& rSh, SwTOXMark* pCurTOXMark) = 0; - virtual AbstractMailMergeWizard* CreateMailMergeWizard(SwView& rView, std::shared_ptr<SwMailMergeConfigItem>& rConfigItem) = 0; + virtual VclPtr<AbstractMailMergeWizard> CreateMailMergeWizard(SwView& rView, std::shared_ptr<SwMailMergeConfigItem>& rConfigItem) = 0; virtual GlossaryGetCurrGroup GetGlossaryCurrGroupFunc() = 0; virtual GlossarySetActGroup SetGlossaryActGroupFunc() = 0; diff --git a/sw/source/ui/dialog/swdlgfact.cxx b/sw/source/ui/dialog/swdlgfact.cxx index 5efee1fc9985..d19b2e7d7d8c 100644 --- a/sw/source/ui/dialog/swdlgfact.cxx +++ b/sw/source/ui/dialog/swdlgfact.cxx @@ -590,7 +590,13 @@ void AbstractSwWordCountFloatDlg_Impl::SetCounts(const SwDocStat &rCurrCnt, cons AbstractMailMergeWizard_Impl::~AbstractMailMergeWizard_Impl() { + disposeOnce(); +} + +void AbstractMailMergeWizard_Impl::dispose() +{ pDlg.disposeAndClear(); + AbstractMailMergeWizard::dispose(); } void AbstractMailMergeWizard_Impl::StartExecuteModal( const Link<Dialog&,void>& rEndDialogHdl ) @@ -629,13 +635,13 @@ sal_uInt16 AbstractMailMergeWizard_Impl::GetRestartPage() const return pDlg->GetRestartPage(); } -AbstractSwInsertAbstractDlg * SwAbstractDialogFactory_Impl::CreateSwInsertAbstractDlg() +VclPtr<AbstractSwInsertAbstractDlg> SwAbstractDialogFactory_Impl::CreateSwInsertAbstractDlg() { VclPtr<SwInsertAbstractDlg> pDlg = VclPtr<SwInsertAbstractDlg>::Create(nullptr); - return new AbstractSwInsertAbstractDlg_Impl(pDlg); + return VclPtr<AbstractSwInsertAbstractDlg_Impl>::Create(pDlg); } -SfxAbstractDialog* SwAbstractDialogFactory_Impl::CreateSfxDialog( vcl::Window* pParent, +VclPtr<SfxAbstractDialog> SwAbstractDialogFactory_Impl::CreateSfxDialog( vcl::Window* pParent, const SfxItemSet& rSet, const css::uno::Reference< css::frame::XFrame >&, sal_uInt32 nResId @@ -661,92 +667,92 @@ SfxAbstractDialog* SwAbstractDialogFactory_Impl::CreateSfxDialog( vcl::Window* p } if ( pDlg ) - return new SwAbstractSfxDialog_Impl( pDlg ); + VclPtr<SwAbstractSfxDialog_Impl>::Create( pDlg ); return nullptr; } -AbstractSwAsciiFilterDlg* SwAbstractDialogFactory_Impl::CreateSwAsciiFilterDlg( SwDocShell& rDocSh, +VclPtr<AbstractSwAsciiFilterDlg> SwAbstractDialogFactory_Impl::CreateSwAsciiFilterDlg( SwDocShell& rDocSh, SvStream* pStream ) { VclPtr<SwAsciiFilterDlg> pDlg = VclPtr<SwAsciiFilterDlg>::Create( nullptr, rDocSh, pStream ); - return new AbstractSwAsciiFilterDlg_Impl( pDlg ); + return VclPtr<AbstractSwAsciiFilterDlg_Impl>::Create( pDlg ); } -VclAbstractDialog* SwAbstractDialogFactory_Impl::CreateSwInsertBookmarkDlg( vcl::Window *pParent, +VclPtr<VclAbstractDialog> SwAbstractDialogFactory_Impl::CreateSwInsertBookmarkDlg( vcl::Window *pParent, SwWrtShell &rSh, SfxRequest& rReq ) { VclPtr<SwInsertBookmarkDlg> pDlg = VclPtr<SwInsertBookmarkDlg>::Create( pParent, rSh, rReq ); - return new VclAbstractDialog_Impl( pDlg ); + return VclPtr<VclAbstractDialog_Impl>::Create( pDlg ); } -AbstractSwBreakDlg * SwAbstractDialogFactory_Impl::CreateSwBreakDlg(vcl::Window *pParent, +VclPtr<AbstractSwBreakDlg> SwAbstractDialogFactory_Impl::CreateSwBreakDlg(vcl::Window *pParent, SwWrtShell &rSh) { VclPtr<SwBreakDlg> pDlg = VclPtr<SwBreakDlg>::Create(pParent, rSh); - return new AbstractSwBreakDlg_Impl(pDlg); + return VclPtr<AbstractSwBreakDlg_Impl>::Create(pDlg); } -VclAbstractDialog * SwAbstractDialogFactory_Impl::CreateSwChangeDBDlg(SwView& rVw) +VclPtr<VclAbstractDialog> SwAbstractDialogFactory_Impl::CreateSwChangeDBDlg(SwView& rVw) { VclPtr<Dialog> pDlg = VclPtr<SwChangeDBDlg>::Create(rVw); - return new VclAbstractDialog_Impl(pDlg); + return VclPtr<VclAbstractDialog_Impl>::Create(pDlg); } -SfxAbstractTabDialog * SwAbstractDialogFactory_Impl::CreateSwCharDlg(vcl::Window* pParent, SwView& pVw, +VclPtr<SfxAbstractTabDialog> SwAbstractDialogFactory_Impl::CreateSwCharDlg(vcl::Window* pParent, SwView& pVw, const SfxItemSet& rCoreSet, SwCharDlgMode nDialogMode, const OUString* pFormatStr) { VclPtr<SfxTabDialog> pDlg = VclPtr<SwCharDlg>::Create(pParent, pVw, rCoreSet, nDialogMode, pFormatStr); - return new AbstractTabDialog_Impl(pDlg); + return VclPtr<AbstractTabDialog_Impl>::Create(pDlg); } -AbstractSwConvertTableDlg* SwAbstractDialogFactory_Impl::CreateSwConvertTableDlg(SwView& rView, bool bToTable) +VclPtr<AbstractSwConvertTableDlg> SwAbstractDialogFactory_Impl::CreateSwConvertTableDlg(SwView& rView, bool bToTable) { VclPtr<SwConvertTableDlg> pDlg = VclPtr<SwConvertTableDlg>::Create(rView, bToTable); - return new AbstractSwConvertTableDlg_Impl(pDlg); + return VclPtr<AbstractSwConvertTableDlg_Impl>::Create(pDlg); } -VclAbstractDialog * SwAbstractDialogFactory_Impl::CreateSwCaptionDialog ( vcl::Window *pParent, SwView &rV) +VclPtr<VclAbstractDialog> SwAbstractDialogFactory_Impl::CreateSwCaptionDialog ( vcl::Window *pParent, SwView &rV) { VclPtr<Dialog> pDlg = VclPtr<SwCaptionDialog>::Create( pParent, rV ); - return new VclAbstractDialog_Impl( pDlg ); + return VclPtr<VclAbstractDialog_Impl>::Create( pDlg ); } -AbstractSwInsertDBColAutoPilot* SwAbstractDialogFactory_Impl::CreateSwInsertDBColAutoPilot( SwView& rView, +VclPtr<AbstractSwInsertDBColAutoPilot> SwAbstractDialogFactory_Impl::CreateSwInsertDBColAutoPilot( SwView& rView, uno::Reference< sdbc::XDataSource> rxSource, uno::Reference<sdbcx::XColumnsSupplier> xColSupp, const SwDBData& rData) { VclPtr<SwInsertDBColAutoPilot> pDlg = VclPtr<SwInsertDBColAutoPilot>::Create( rView, rxSource, xColSupp, rData ); - return new AbstractSwInsertDBColAutoPilot_Impl( pDlg ); + return VclPtr<AbstractSwInsertDBColAutoPilot_Impl>::Create( pDlg ); } -SfxAbstractTabDialog * SwAbstractDialogFactory_Impl::CreateSwFootNoteOptionDlg(vcl::Window *pParent, SwWrtShell &rSh) +VclPtr<SfxAbstractTabDialog> SwAbstractDialogFactory_Impl::CreateSwFootNoteOptionDlg(vcl::Window *pParent, SwWrtShell &rSh) { VclPtr<SfxTabDialog> pDlg = VclPtr<SwFootNoteOptionDlg>::Create( pParent, rSh ); - return new AbstractTabDialog_Impl( pDlg ); + return VclPtr<AbstractTabDialog_Impl>::Create( pDlg ); } -AbstractDropDownFieldDialog * SwAbstractDialogFactory_Impl::CreateDropDownFieldDialog( +VclPtr<AbstractDropDownFieldDialog> SwAbstractDialogFactory_Impl::CreateDropDownFieldDialog( SwWrtShell &rSh, SwField* pField, bool bNextButton) { VclPtr<sw::DropDownFieldDialog> pDlg = VclPtr<sw::DropDownFieldDialog>::Create(nullptr, rSh, pField, bNextButton); - return new AbstractDropDownFieldDialog_Impl( pDlg ); + return VclPtr<AbstractDropDownFieldDialog_Impl>::Create( pDlg ); } -SfxAbstractTabDialog* SwAbstractDialogFactory_Impl::CreateSwEnvDlg ( vcl::Window* pParent, const SfxItemSet& rSet, +VclPtr<SfxAbstractTabDialog> SwAbstractDialogFactory_Impl::CreateSwEnvDlg ( vcl::Window* pParent, const SfxItemSet& rSet, SwWrtShell* pWrtSh, Printer* pPrt, bool bInsert ) { VclPtr<SfxTabDialog> pDlg = VclPtr<SwEnvDlg>::Create( pParent, rSet, pWrtSh,pPrt, bInsert ); - return new AbstractTabDialog_Impl( pDlg ); + return VclPtr<AbstractTabDialog_Impl>::Create( pDlg ); } -AbstractSwLabDlg* SwAbstractDialogFactory_Impl::CreateSwLabDlg(const SfxItemSet& rSet, +VclPtr<AbstractSwLabDlg> SwAbstractDialogFactory_Impl::CreateSwLabDlg(const SfxItemSet& rSet, SwDBManager* pDBManager, bool bLabel) { VclPtr<SwLabDlg> pDlg = VclPtr<SwLabDlg>::Create(nullptr, rSet, pDBManager, bLabel); - return new AbstractSwLabDlg_Impl(pDlg); + return VclPtr<AbstractSwLabDlg_Impl>::Create(pDlg); } SwLabDlgMethod SwAbstractDialogFactory_Impl::GetSwLabDlgStaticMethod () @@ -754,16 +760,16 @@ SwLabDlgMethod SwAbstractDialogFactory_Impl::GetSwLabDlgStaticMethod () return SwLabDlg::UpdateFieldInformation; } -SfxAbstractTabDialog* SwAbstractDialogFactory_Impl::CreateSwParaDlg ( vcl::Window *pParent, SwView& rVw, +VclPtr<SfxAbstractTabDialog> SwAbstractDialogFactory_Impl::CreateSwParaDlg ( vcl::Window *pParent, SwView& rVw, const SfxItemSet& rCoreSet , bool bDraw , const OString& sDefPage) { VclPtr<SfxTabDialog> pDlg = VclPtr<SwParaDlg>::Create( pParent, rVw, rCoreSet, DLG_STD, nullptr, bDraw, sDefPage ); - return new AbstractTabDialog_Impl( pDlg ); + return VclPtr<AbstractTabDialog_Impl>::Create( pDlg ); } -VclAbstractDialog * SwAbstractDialogFactory_Impl::CreateVclAbstractDialog ( vcl::Window *pParent, SwWrtShell &rSh, int nResId ) +VclPtr<VclAbstractDialog> SwAbstractDialogFactory_Impl::CreateVclAbstractDialog ( vcl::Window *pParent, SwWrtShell &rSh, int nResId ) { VclPtr<Dialog> pDlg; switch ( nResId ) @@ -785,96 +791,96 @@ VclAbstractDialog * SwAbstractDialogFactory_Impl::CreateVclAbstractDialog ( vcl: } if ( pDlg.get() ) - return new VclAbstractDialog_Impl( pDlg ); + return VclPtr<VclAbstractDialog_Impl>::Create( pDlg ); return nullptr; } -AbstractSplitTableDialog * SwAbstractDialogFactory_Impl::CreateSplitTableDialog ( vcl::Window *pParent, SwWrtShell &rSh ) +VclPtr<AbstractSplitTableDialog> SwAbstractDialogFactory_Impl::CreateSplitTableDialog ( vcl::Window *pParent, SwWrtShell &rSh ) { - return new AbstractSplitTableDialog_Impl( VclPtr<SwSplitTableDlg>::Create( pParent, rSh) ); + return VclPtr<AbstractSplitTableDialog_Impl>::Create( VclPtr<SwSplitTableDlg>::Create( pParent, rSh) ); } -AbstractSwSelGlossaryDlg * SwAbstractDialogFactory_Impl::CreateSwSelGlossaryDlg(const OUString &rShortName) +VclPtr<AbstractSwSelGlossaryDlg> SwAbstractDialogFactory_Impl::CreateSwSelGlossaryDlg(const OUString &rShortName) { VclPtr<SwSelGlossaryDlg> pDlg = VclPtr<SwSelGlossaryDlg>::Create(nullptr, rShortName); - return new AbstractSwSelGlossaryDlg_Impl(pDlg); + return VclPtr<AbstractSwSelGlossaryDlg_Impl>::Create(pDlg); } -AbstractSwAutoFormatDlg * SwAbstractDialogFactory_Impl::CreateSwAutoFormatDlg(vcl::Window* pParent, +VclPtr<AbstractSwAutoFormatDlg> SwAbstractDialogFactory_Impl::CreateSwAutoFormatDlg(vcl::Window* pParent, SwWrtShell* pShell, bool bSetAutoFormat, const SwTableAutoFormat* pSelFormat) { VclPtr<SwAutoFormatDlg> pDlg = VclPtr<SwAutoFormatDlg>::Create(pParent, pShell, bSetAutoFormat, pSelFormat); - return new AbstractSwAutoFormatDlg_Impl(pDlg); + return VclPtr<AbstractSwAutoFormatDlg_Impl>::Create(pDlg); } -SfxAbstractDialog * SwAbstractDialogFactory_Impl::CreateSwBorderDlg(vcl::Window* pParent, SfxItemSet& rSet, SwBorderModes nType ) +VclPtr<SfxAbstractDialog> SwAbstractDialogFactory_Impl::CreateSwBorderDlg(vcl::Window* pParent, SfxItemSet& rSet, SwBorderModes nType ) { VclPtr<SfxModalDialog> pDlg = VclPtr<SwBorderDlg>::Create( pParent, rSet, nType ); - return new SwAbstractSfxDialog_Impl( pDlg ); + return VclPtr<SwAbstractSfxDialog_Impl>::Create( pDlg ); } -SfxAbstractDialog* SwAbstractDialogFactory_Impl::CreateSwWrapDlg ( vcl::Window* pParent, SfxItemSet& rSet, SwWrtShell* pSh ) +VclPtr<SfxAbstractDialog> SwAbstractDialogFactory_Impl::CreateSwWrapDlg ( vcl::Window* pParent, SfxItemSet& rSet, SwWrtShell* pSh ) { VclPtr<SfxModalDialog> pDlg = VclPtr<SwWrapDlg>::Create( pParent, rSet, pSh, true/*bDrawMode*/ ); - return new SwAbstractSfxDialog_Impl( pDlg ); + return VclPtr<SwAbstractSfxDialog_Impl>::Create( pDlg ); } -VclAbstractDialog * SwAbstractDialogFactory_Impl::CreateSwTableWidthDlg(vcl::Window *pParent, SwTableFUNC &rFnc) +VclPtr<VclAbstractDialog> SwAbstractDialogFactory_Impl::CreateSwTableWidthDlg(vcl::Window *pParent, SwTableFUNC &rFnc) { VclPtr<Dialog> pDlg = VclPtr<SwTableWidthDlg>::Create(pParent, rFnc); - return new VclAbstractDialog_Impl( pDlg ); + return VclPtr<VclAbstractDialog_Impl>::Create( pDlg ); } -SfxAbstractTabDialog* SwAbstractDialogFactory_Impl::CreateSwTableTabDlg(vcl::Window* pParent, SfxItemPool& Pool, +VclPtr<SfxAbstractTabDialog> SwAbstractDialogFactory_Impl::CreateSwTableTabDlg(vcl::Window* pParent, SfxItemPool& Pool, const SfxItemSet* pItemSet, SwWrtShell* pSh) { VclPtr<SfxTabDialog> pDlg = VclPtr<SwTableTabDlg>::Create(pParent, Pool, pItemSet, pSh); - return new AbstractTabDialog_Impl(pDlg); + return VclPtr<AbstractTabDialog_Impl>::Create(pDlg); } -AbstractSwFieldDlg * SwAbstractDialogFactory_Impl::CreateSwFieldDlg(SfxBindings* pB, SwChildWinWrapper* pCW, vcl::Window *pParent) +VclPtr<AbstractSwFieldDlg> SwAbstractDialogFactory_Impl::CreateSwFieldDlg(SfxBindings* pB, SwChildWinWrapper* pCW, vcl::Window *pParent) { VclPtr<SwFieldDlg> pDlg = VclPtr<SwFieldDlg>::Create(pB, pCW, pParent); - return new AbstractSwFieldDlg_Impl(pDlg); + return VclPtr<AbstractSwFieldDlg_Impl>::Create(pDlg); } -SfxAbstractDialog* SwAbstractDialogFactory_Impl::CreateSwFieldEditDlg ( SwView& rVw ) +VclPtr<SfxAbstractDialog> SwAbstractDialogFactory_Impl::CreateSwFieldEditDlg ( SwView& rVw ) { VclPtr<SfxModalDialog> pDlg = VclPtr<SwFieldEditDlg>::Create( rVw ); - return new SwAbstractSfxDialog_Impl( pDlg ); + return VclPtr<SwAbstractSfxDialog_Impl>::Create( pDlg ); } -AbstractSwRenameXNamedDlg * SwAbstractDialogFactory_Impl::CreateSwRenameXNamedDlg(vcl::Window* pParent, +VclPtr<AbstractSwRenameXNamedDlg> SwAbstractDialogFactory_Impl::CreateSwRenameXNamedDlg(vcl::Window* pParent, css::uno::Reference< css::container::XNamed > & xNamed, css::uno::Reference< css::container::XNameAccess > & xNameAccess) { VclPtr<SwRenameXNamedDlg> pDlg = VclPtr<SwRenameXNamedDlg>::Create( pParent,xNamed, xNameAccess); - return new AbstractSwRenameXNamedDlg_Impl( pDlg ); + return VclPtr<AbstractSwRenameXNamedDlg_Impl>::Create( pDlg ); } -AbstractSwModalRedlineAcceptDlg * SwAbstractDialogFactory_Impl::CreateSwModalRedlineAcceptDlg(vcl::Window *pParent) +VclPtr<AbstractSwModalRedlineAcceptDlg> SwAbstractDialogFactory_Impl::CreateSwModalRedlineAcceptDlg(vcl::Window *pParent) { VclPtr<SwModalRedlineAcceptDlg> pDlg = VclPtr<SwModalRedlineAcceptDlg>::Create( pParent ); - return new AbstractSwModalRedlineAcceptDlg_Impl( pDlg ); + return VclPtr<AbstractSwModalRedlineAcceptDlg_Impl>::Create( pDlg ); } -VclAbstractDialog * SwAbstractDialogFactory_Impl::CreateTableMergeDialog(vcl::Window* pParent, bool& rWithPrev) +VclPtr<VclAbstractDialog> SwAbstractDialogFactory_Impl::CreateTableMergeDialog(vcl::Window* pParent, bool& rWithPrev) { VclPtr<Dialog> pDlg = VclPtr<SwMergeTableDlg>::Create( pParent, rWithPrev ); - return new VclAbstractDialog_Impl( pDlg ); + return VclPtr<VclAbstractDialog_Impl>::Create( pDlg ); } -SfxAbstractTabDialog* SwAbstractDialogFactory_Impl::CreateFrameTabDialog(const OUString &rDialogType, +VclPtr<SfxAbstractTabDialog> SwAbstractDialogFactory_Impl::CreateFrameTabDialog(const OUString &rDialogType, SfxViewFrame *pFrame, vcl::Window *pParent, const SfxItemSet& rCoreSet, bool bNewFrame, const OString& sDefPage ) { VclPtr<SfxTabDialog> pDlg = VclPtr<SwFrameDlg>::Create(pFrame, pParent, rCoreSet, bNewFrame, rDialogType, false/*bFormat*/, sDefPage, nullptr); - return new AbstractTabDialog_Impl(pDlg); + return VclPtr<AbstractTabDialog_Impl>::Create(pDlg); } -SfxAbstractApplyTabDialog* SwAbstractDialogFactory_Impl::CreateTemplateDialog( +VclPtr<SfxAbstractApplyTabDialog> SwAbstractDialogFactory_Impl::CreateTemplateDialog( vcl::Window *pParent, SfxStyleSheetBase& rBase, SfxStyleFamily nRegion, @@ -883,57 +889,57 @@ SfxAbstractApplyTabDialog* SwAbstractDialogFactory_Impl::CreateTemplateDialog( bool bNew ) { VclPtr<SfxTabDialog> pDlg = VclPtr<SwTemplateDlg>::Create(pParent, rBase, nRegion, sPage, pActShell, bNew); - return new AbstractApplyTabDialog_Impl(pDlg); + return VclPtr<AbstractApplyTabDialog_Impl>::Create(pDlg); } -AbstractGlossaryDlg* SwAbstractDialogFactory_Impl::CreateGlossaryDlg(SfxViewFrame* pViewFrame, +VclPtr<AbstractGlossaryDlg> SwAbstractDialogFactory_Impl::CreateGlossaryDlg(SfxViewFrame* pViewFrame, SwGlossaryHdl* pGlosHdl, SwWrtShell *pWrtShell) { VclPtr<SwGlossaryDlg> pDlg = VclPtr<SwGlossaryDlg>::Create(pViewFrame, pGlosHdl, pWrtShell); - return new AbstractGlossaryDlg_Impl( pDlg ); + return VclPtr<AbstractGlossaryDlg_Impl>::Create( pDlg ); } -AbstractFieldInputDlg* SwAbstractDialogFactory_Impl::CreateFieldInputDlg(vcl::Window *pParent, +VclPtr<AbstractFieldInputDlg> SwAbstractDialogFactory_Impl::CreateFieldInputDlg(vcl::Window *pParent, SwWrtShell &rSh, SwField* pField, bool bNextButton) { VclPtr<SwFieldInputDlg> pDlg = VclPtr<SwFieldInputDlg>::Create( pParent, rSh, pField, bNextButton ); - return new AbstractFieldInputDlg_Impl( pDlg ); + return VclPtr<AbstractFieldInputDlg_Impl>::Create( pDlg ); } -AbstractInsFootNoteDlg* SwAbstractDialogFactory_Impl::CreateInsFootNoteDlg( +VclPtr<AbstractInsFootNoteDlg> SwAbstractDialogFactory_Impl::CreateInsFootNoteDlg( vcl::Window * pParent, SwWrtShell &rSh, bool bEd ) { VclPtr<SwInsFootNoteDlg> pDlg = VclPtr<SwInsFootNoteDlg>::Create(pParent, rSh, bEd); - return new AbstractInsFootNoteDlg_Impl( pDlg ); + return VclPtr<AbstractInsFootNoteDlg_Impl>::Create( pDlg ); } -VclAbstractDialog * SwAbstractDialogFactory_Impl::CreateTitlePageDlg ( vcl::Window *pParent ) +VclPtr<VclAbstractDialog> SwAbstractDialogFactory_Impl::CreateTitlePageDlg ( vcl::Window *pParent ) { VclPtr<Dialog> pDlg = VclPtr<SwTitlePageDlg>::Create( pParent ); - return new VclAbstractDialog_Impl( pDlg ); + return VclPtr<VclAbstractDialog_Impl>::Create( pDlg ); } -VclAbstractDialog * SwAbstractDialogFactory_Impl::CreateVclSwViewDialog(SwView& rView) +VclPtr<VclAbstractDialog> SwAbstractDialogFactory_Impl::CreateVclSwViewDialog(SwView& rView) { VclPtr<Dialog> pDlg = VclPtr<SwLineNumberingDlg>::Create( &rView ); - return new VclAbstractDialog_Impl( pDlg ); + return VclPtr<VclAbstractDialog_Impl>::Create( pDlg ); } -AbstractInsTableDlg * SwAbstractDialogFactory_Impl::CreateInsTableDlg(SwView& rView) +VclPtr<AbstractInsTableDlg> SwAbstractDialogFactory_Impl::CreateInsTableDlg(SwView& rView) { VclPtr<SwInsTableDlg> pDlg = VclPtr<SwInsTableDlg>::Create(rView); - return new AbstractInsTableDlg_Impl( pDlg ); + return VclPtr<AbstractInsTableDlg_Impl>::Create( pDlg ); } -AbstractJavaEditDialog * SwAbstractDialogFactory_Impl::CreateJavaEditDialog( +VclPtr<AbstractJavaEditDialog> SwAbstractDialogFactory_Impl::CreateJavaEditDialog( vcl::Window* pParent, SwWrtShell* pWrtSh) { VclPtr<SwJavaEditDialog> pDlg = VclPtr<SwJavaEditDialog>::Create(pParent, pWrtSh); - return new AbstractJavaEditDialog_Impl( pDlg ); + return VclPtr<AbstractJavaEditDialog_Impl>::Create( pDlg ); } -AbstractMailMergeDlg * SwAbstractDialogFactory_Impl::CreateMailMergeDlg( +VclPtr<AbstractMailMergeDlg> SwAbstractDialogFactory_Impl::CreateMailMergeDlg( vcl::Window* pParent, SwWrtShell& rSh, const OUString& rSourceName, const OUString& rTableName, @@ -941,28 +947,28 @@ AbstractMailMergeDlg * SwAbstractDialogFactory_Impl::CreateMailMergeDlg( const uno::Reference< sdbc::XConnection>& xConnection ) { VclPtr<SwMailMergeDlg> pDlg = VclPtr<SwMailMergeDlg>::Create( pParent, rSh, rSourceName, rTableName, nCommandType, xConnection, nullptr ); - return new AbstractMailMergeDlg_Impl( pDlg ); + return VclPtr<AbstractMailMergeDlg_Impl>::Create( pDlg ); } -AbstractMailMergeCreateFromDlg * SwAbstractDialogFactory_Impl::CreateMailMergeCreateFromDlg(vcl::Window* pParent) +VclPtr<AbstractMailMergeCreateFromDlg> SwAbstractDialogFactory_Impl::CreateMailMergeCreateFromDlg(vcl::Window* pParent) { VclPtr<SwMailMergeCreateFromDlg> pDlg = VclPtr<SwMailMergeCreateFromDlg>::Create(pParent); - return new AbstractMailMergeCreateFromDlg_Impl(pDlg); + return VclPtr<AbstractMailMergeCreateFromDlg_Impl>::Create(pDlg); } -AbstractMailMergeFieldConnectionsDlg * SwAbstractDialogFactory_Impl::CreateMailMergeFieldConnectionsDlg(vcl::Window* pParent) +VclPtr<AbstractMailMergeFieldConnectionsDlg> SwAbstractDialogFactory_Impl::CreateMailMergeFieldConnectionsDlg(vcl::Window* pParent) { VclPtr<SwMailMergeFieldConnectionsDlg> pDlg = VclPtr<SwMailMergeFieldConnectionsDlg>::Create( pParent ); - return new AbstractMailMergeFieldConnectionsDlg_Impl( pDlg ); + return VclPtr<AbstractMailMergeFieldConnectionsDlg_Impl>::Create( pDlg ); } -VclAbstractDialog * SwAbstractDialogFactory_Impl::CreateMultiTOXMarkDlg(vcl::Window* pParent, SwTOXMgr &rTOXMgr) +VclPtr<VclAbstractDialog> SwAbstractDialogFactory_Impl::CreateMultiTOXMarkDlg(vcl::Window* pParent, SwTOXMgr &rTOXMgr) { VclPtr<Dialog> pDlg = VclPtr<SwMultiTOXMarkDlg>::Create(pParent, rTOXMgr); - return new VclAbstractDialog_Impl(pDlg); + return VclPtr<VclAbstractDialog_Impl>::Create(pDlg); } -SfxAbstractTabDialog* SwAbstractDialogFactory_Impl::CreateSwTabDialog( int nResId, +VclPtr<SfxAbstractTabDialog> SwAbstractDialogFactory_Impl::CreateSwTabDialog( int nResId, vcl::Window* pParent, const SfxItemSet* pSwItemSet, SwWrtShell & rWrtSh ) @@ -981,74 +987,74 @@ SfxAbstractTabDialog* SwAbstractDialogFactory_Impl::CreateSwTabDialog( int nResI break; } if ( pDlg.get() ) - return new AbstractTabDialog_Impl( pDlg ); + return VclPtr<AbstractTabDialog_Impl>::Create( pDlg ); return nullptr; } -AbstractMultiTOXTabDialog * SwAbstractDialogFactory_Impl::CreateMultiTOXTabDialog( +VclPtr<AbstractMultiTOXTabDialog> SwAbstractDialogFactory_Impl::CreateMultiTOXTabDialog( vcl::Window* pParent, const SfxItemSet& rSet, SwWrtShell &rShell, SwTOXBase* pCurTOX, bool bGlobal) { VclPtr<SwMultiTOXTabDialog> pDlg = VclPtr<SwMultiTOXTabDialog>::Create( pParent, rSet, rShell, pCurTOX, USHRT_MAX, bGlobal ); - return new AbstractMultiTOXTabDialog_Impl( pDlg ); + return VclPtr<AbstractMultiTOXTabDialog_Impl>::Create( pDlg ); } -AbstractEditRegionDlg * SwAbstractDialogFactory_Impl::CreateEditRegionDlg(vcl::Window* pParent, SwWrtShell& rWrtSh) +VclPtr<AbstractEditRegionDlg> SwAbstractDialogFactory_Impl::CreateEditRegionDlg(vcl::Window* pParent, SwWrtShell& rWrtSh) { VclPtr<SwEditRegionDlg> pDlg = VclPtr<SwEditRegionDlg>::Create( pParent, rWrtSh ); - return new AbstractEditRegionDlg_Impl( pDlg ); + return VclPtr<AbstractEditRegionDlg_Impl>::Create( pDlg ); } -AbstractInsertSectionTabDialog * SwAbstractDialogFactory_Impl::CreateInsertSectionTabDialog( +VclPtr<AbstractInsertSectionTabDialog> SwAbstractDialogFactory_Impl::CreateInsertSectionTabDialog( vcl::Window* pParent, const SfxItemSet& rSet, SwWrtShell& rSh) { VclPtr<SwInsertSectionTabDialog> pDlg = VclPtr<SwInsertSectionTabDialog>::Create(pParent, rSet, rSh); - return new AbstractInsertSectionTabDialog_Impl(pDlg); + return VclPtr<AbstractInsertSectionTabDialog_Impl>::Create(pDlg); } -AbstractMarkFloatDlg * SwAbstractDialogFactory_Impl::CreateIndexMarkFloatDlg( +VclPtr<AbstractMarkFloatDlg> SwAbstractDialogFactory_Impl::CreateIndexMarkFloatDlg( SfxBindings* pBindings, SfxChildWindow* pChild, vcl::Window *pParent, SfxChildWinInfo* pInfo ) { VclPtr<SwIndexMarkFloatDlg> pDlg = VclPtr<SwIndexMarkFloatDlg>::Create(pBindings, pChild, pParent, pInfo, true/*bNew*/); - return new AbstractIndexMarkFloatDlg_Impl(pDlg); + return VclPtr<AbstractIndexMarkFloatDlg_Impl>::Create(pDlg); } -AbstractMarkFloatDlg * SwAbstractDialogFactory_Impl::CreateAuthMarkFloatDlg( +VclPtr<AbstractMarkFloatDlg> SwAbstractDialogFactory_Impl::CreateAuthMarkFloatDlg( SfxBindings* pBindings, SfxChildWindow* pChild, vcl::Window *pParent, SfxChildWinInfo* pInfo) { VclPtr<SwAuthMarkFloatDlg> pDlg = VclPtr<SwAuthMarkFloatDlg>::Create( pBindings, pChild, pParent, pInfo, true/*bNew*/ ); - return new AbstractAuthMarkFloatDlg_Impl( pDlg ); + return VclPtr<AbstractAuthMarkFloatDlg_Impl>::Create( pDlg ); } -AbstractSwWordCountFloatDlg * SwAbstractDialogFactory_Impl::CreateSwWordCountDialog( +VclPtr<AbstractSwWordCountFloatDlg> SwAbstractDialogFactory_Impl::CreateSwWordCountDialog( SfxBindings* pBindings, SfxChildWindow* pChild, vcl::Window *pParent, SfxChildWinInfo* pInfo) { VclPtr<SwWordCountFloatDlg> pDlg = VclPtr<SwWordCountFloatDlg>::Create( pBindings, pChild, pParent, pInfo ); - return new AbstractSwWordCountFloatDlg_Impl( pDlg ); + return VclPtr<AbstractSwWordCountFloatDlg_Impl>::Create( pDlg ); } -VclAbstractDialog * SwAbstractDialogFactory_Impl::CreateIndexMarkModalDlg( +VclPtr<VclAbstractDialog> SwAbstractDialogFactory_Impl::CreateIndexMarkModalDlg( vcl::Window *pParent, SwWrtShell& rSh, SwTOXMark* pCurTOXMark ) { VclPtr<Dialog> pDlg = VclPtr<SwIndexMarkModalDlg>::Create( pParent, rSh, pCurTOXMark ); - return new VclAbstractDialog_Impl( pDlg ); + return VclPtr<VclAbstractDialog_Impl>::Create( pDlg ); } -AbstractMailMergeWizard* SwAbstractDialogFactory_Impl::CreateMailMergeWizard( +VclPtr<AbstractMailMergeWizard> SwAbstractDialogFactory_Impl::CreateMailMergeWizard( SwView& rView, std::shared_ptr<SwMailMergeConfigItem>& rConfigItem) { - return new AbstractMailMergeWizard_Impl( VclPtr<SwMailMergeWizard>::Create(rView, rConfigItem)); + return VclPtr<AbstractMailMergeWizard_Impl>::Create( VclPtr<SwMailMergeWizard>::Create(rView, rConfigItem)); } GlossaryGetCurrGroup SwAbstractDialogFactory_Impl::GetGlossaryCurrGroupFunc() diff --git a/sw/source/ui/dialog/swdlgfact.hxx b/sw/source/ui/dialog/swdlgfact.hxx index e3cc72cf7e24..63d82b707c4e 100644 --- a/sw/source/ui/dialog/swdlgfact.hxx +++ b/sw/source/ui/dialog/swdlgfact.hxx @@ -353,6 +353,7 @@ public: : pDlg(p) {} virtual ~AbstractMailMergeWizard_Impl() override; + virtual void dispose() override; virtual void StartExecuteModal( const Link<Dialog&,void>& rEndDialogHdl ) override; virtual long GetResult() override; @@ -368,123 +369,123 @@ class SwAbstractDialogFactory_Impl : public SwAbstractDialogFactory public: virtual ~SwAbstractDialogFactory_Impl() {} - virtual SfxAbstractDialog* CreateSfxDialog( vcl::Window* pParent, + virtual VclPtr<SfxAbstractDialog> CreateSfxDialog( vcl::Window* pParent, const SfxItemSet& rAttr, const css::uno::Reference< css::frame::XFrame >& _rxFrame, sal_uInt32 nResId ) override; - virtual AbstractSwWordCountFloatDlg* CreateSwWordCountDialog(SfxBindings* pBindings, + virtual VclPtr<AbstractSwWordCountFloatDlg> CreateSwWordCountDialog(SfxBindings* pBindings, SfxChildWindow* pChild, vcl::Window *pParent, SfxChildWinInfo* pInfo) override; - virtual AbstractSwInsertAbstractDlg * CreateSwInsertAbstractDlg() override; - virtual AbstractSwAsciiFilterDlg* CreateSwAsciiFilterDlg ( SwDocShell& rDocSh, + virtual VclPtr<AbstractSwInsertAbstractDlg> CreateSwInsertAbstractDlg() override; + virtual VclPtr<AbstractSwAsciiFilterDlg> CreateSwAsciiFilterDlg ( SwDocShell& rDocSh, SvStream* pStream ) override; - virtual VclAbstractDialog * CreateSwInsertBookmarkDlg( vcl::Window *pParent, SwWrtShell &rSh, SfxRequest& rReq ) override; - virtual AbstractSwBreakDlg * CreateSwBreakDlg(vcl::Window *pParent, SwWrtShell &rSh) override; - virtual VclAbstractDialog * CreateSwChangeDBDlg(SwView& rVw) override; - virtual SfxAbstractTabDialog * CreateSwCharDlg(vcl::Window* pParent, SwView& pVw, const SfxItemSet& rCoreSet, + virtual VclPtr<VclAbstractDialog> CreateSwInsertBookmarkDlg( vcl::Window *pParent, SwWrtShell &rSh, SfxRequest& rReq ) override; + virtual VclPtr<AbstractSwBreakDlg> CreateSwBreakDlg(vcl::Window *pParent, SwWrtShell &rSh) override; + virtual VclPtr<VclAbstractDialog> CreateSwChangeDBDlg(SwView& rVw) override; + virtual VclPtr<SfxAbstractTabDialog> CreateSwCharDlg(vcl::Window* pParent, SwView& pVw, const SfxItemSet& rCoreSet, SwCharDlgMode nDialogMode, const OUString* pFormatStr = nullptr) override; - virtual AbstractSwConvertTableDlg* CreateSwConvertTableDlg(SwView& rView, bool bToTable) override; - virtual VclAbstractDialog * CreateSwCaptionDialog ( vcl::Window *pParent, SwView &rV) override; + virtual VclPtr<AbstractSwConvertTableDlg> CreateSwConvertTableDlg(SwView& rView, bool bToTable) override; + virtual VclPtr<VclAbstractDialog> CreateSwCaptionDialog ( vcl::Window *pParent, SwView &rV) override; - virtual AbstractSwInsertDBColAutoPilot* CreateSwInsertDBColAutoPilot(SwView& rView, + virtual VclPtr<AbstractSwInsertDBColAutoPilot> CreateSwInsertDBColAutoPilot(SwView& rView, css::uno::Reference< css::sdbc::XDataSource> rxSource, css::uno::Reference<css::sdbcx::XColumnsSupplier> xColSupp, const SwDBData& rData) override; - virtual SfxAbstractTabDialog * CreateSwFootNoteOptionDlg(vcl::Window *pParent, SwWrtShell &rSh) override; + virtual VclPtr<SfxAbstractTabDialog> CreateSwFootNoteOptionDlg(vcl::Window *pParent, SwWrtShell &rSh) override; - virtual AbstractDropDownFieldDialog * CreateDropDownFieldDialog(SwWrtShell &rSh, + virtual VclPtr<AbstractDropDownFieldDialog> CreateDropDownFieldDialog(SwWrtShell &rSh, SwField* pField, bool bNextButton) override; - virtual SfxAbstractTabDialog* CreateSwEnvDlg ( vcl::Window* pParent, const SfxItemSet& rSet, SwWrtShell* pWrtSh, Printer* pPrt, bool bInsert ) override; - virtual AbstractSwLabDlg* CreateSwLabDlg(const SfxItemSet& rSet, + virtual VclPtr<SfxAbstractTabDialog> CreateSwEnvDlg ( vcl::Window* pParent, const SfxItemSet& rSet, SwWrtShell* pWrtSh, Printer* pPrt, bool bInsert ) override; + virtual VclPtr<AbstractSwLabDlg> CreateSwLabDlg(const SfxItemSet& rSet, SwDBManager* pDBManager, bool bLabel) override; virtual SwLabDlgMethod GetSwLabDlgStaticMethod () override; - virtual SfxAbstractTabDialog* CreateSwParaDlg ( vcl::Window *pParent, + virtual VclPtr<SfxAbstractTabDialog> CreateSwParaDlg ( vcl::Window *pParent, SwView& rVw, const SfxItemSet& rCoreSet, bool bDraw, const OString& sDefPage = OString() ) override; - virtual AbstractSwSelGlossaryDlg * CreateSwSelGlossaryDlg(const OUString &rShortName) override; - virtual VclAbstractDialog * CreateVclAbstractDialog ( vcl::Window * pParent, SwWrtShell &rSh, int nResId ) override; - virtual AbstractSplitTableDialog * CreateSplitTableDialog ( vcl::Window * pParent, SwWrtShell &rSh ) override; + virtual VclPtr<AbstractSwSelGlossaryDlg> CreateSwSelGlossaryDlg(const OUString &rShortName) override; + virtual VclPtr<VclAbstractDialog> CreateVclAbstractDialog ( vcl::Window * pParent, SwWrtShell &rSh, int nResId ) override; + virtual VclPtr<AbstractSplitTableDialog> CreateSplitTableDialog ( vcl::Window * pParent, SwWrtShell &rSh ) override; - virtual AbstractSwAutoFormatDlg * CreateSwAutoFormatDlg( vcl::Window* pParent, SwWrtShell* pShell, + virtual VclPtr<AbstractSwAutoFormatDlg> CreateSwAutoFormatDlg( vcl::Window* pParent, SwWrtShell* pShell, bool bSetAutoFormat = true, const SwTableAutoFormat* pSelFormat = nullptr ) override; - virtual SfxAbstractDialog * CreateSwBorderDlg (vcl::Window* pParent, SfxItemSet& rSet, SwBorderModes nType ) override; + virtual VclPtr<SfxAbstractDialog> CreateSwBorderDlg (vcl::Window* pParent, SfxItemSet& rSet, SwBorderModes nType ) override; - virtual SfxAbstractDialog * CreateSwWrapDlg ( vcl::Window* pParent, SfxItemSet& rSet, SwWrtShell* pSh ) override; - virtual VclAbstractDialog * CreateSwTableWidthDlg(vcl::Window *pParent, SwTableFUNC &rFnc) override; - virtual SfxAbstractTabDialog* CreateSwTableTabDlg(vcl::Window* pParent, SfxItemPool& Pool, + virtual VclPtr<SfxAbstractDialog> CreateSwWrapDlg ( vcl::Window* pParent, SfxItemSet& rSet, SwWrtShell* pSh ) override; + virtual VclPtr<VclAbstractDialog> CreateSwTableWidthDlg(vcl::Window *pParent, SwTableFUNC &rFnc) override; + virtual VclPtr<SfxAbstractTabDialog> CreateSwTableTabDlg(vcl::Window* pParent, SfxItemPool& Pool, const SfxItemSet* pItemSet, SwWrtShell* pSh) override; - virtual AbstractSwFieldDlg * CreateSwFieldDlg(SfxBindings* pB, SwChildWinWrapper* pCW, vcl::Window *pParent) override; - virtual SfxAbstractDialog* CreateSwFieldEditDlg ( SwView& rVw ) override; - virtual AbstractSwRenameXNamedDlg * CreateSwRenameXNamedDlg(vcl::Window* pParent, + virtual VclPtr<AbstractSwFieldDlg> CreateSwFieldDlg(SfxBindings* pB, SwChildWinWrapper* pCW, vcl::Window *pParent) override; + virtual VclPtr<SfxAbstractDialog> CreateSwFieldEditDlg ( SwView& rVw ) override; + virtual VclPtr<AbstractSwRenameXNamedDlg> CreateSwRenameXNamedDlg(vcl::Window* pParent, css::uno::Reference< css::container::XNamed > & xNamed, css::uno::Reference< css::container::XNameAccess > & xNameAccess) override; - virtual AbstractSwModalRedlineAcceptDlg * CreateSwModalRedlineAcceptDlg(vcl::Window *pParent) override; + virtual VclPtr<AbstractSwModalRedlineAcceptDlg> CreateSwModalRedlineAcceptDlg(vcl::Window *pParent) override; - virtual VclAbstractDialog* CreateTableMergeDialog(vcl::Window* pParent, bool& rWithPrev) override; - virtual SfxAbstractTabDialog* CreateFrameTabDialog( const OUString &rDialogType, + virtual VclPtr<VclAbstractDialog> CreateTableMergeDialog(vcl::Window* pParent, bool& rWithPrev) override; + virtual VclPtr<SfxAbstractTabDialog> CreateFrameTabDialog( const OUString &rDialogType, SfxViewFrame *pFrame, vcl::Window *pParent, const SfxItemSet& rCoreSet, bool bNewFrame = true, const OString& sDefPage = OString()) override; - virtual SfxAbstractApplyTabDialog* CreateTemplateDialog( + virtual VclPtr<SfxAbstractApplyTabDialog> CreateTemplateDialog( vcl::Window *pParent, SfxStyleSheetBase& rBase, SfxStyleFamily nRegion, const OString& sPage, SwWrtShell* pActShell, bool bNew = false) override; - virtual AbstractGlossaryDlg* CreateGlossaryDlg(SfxViewFrame* pViewFrame, + virtual VclPtr<AbstractGlossaryDlg> CreateGlossaryDlg(SfxViewFrame* pViewFrame, SwGlossaryHdl* pGlosHdl, SwWrtShell *pWrtShell) override; - virtual AbstractFieldInputDlg* CreateFieldInputDlg(vcl::Window *pParent, + virtual VclPtr<AbstractFieldInputDlg> CreateFieldInputDlg(vcl::Window *pParent, SwWrtShell &rSh, SwField* pField, bool bNextButton) override; - virtual AbstractInsFootNoteDlg* CreateInsFootNoteDlg( + virtual VclPtr<AbstractInsFootNoteDlg> CreateInsFootNoteDlg( vcl::Window * pParent, SwWrtShell &rSh, bool bEd = false) override; - virtual VclAbstractDialog * CreateTitlePageDlg ( vcl::Window * pParent ) override; - virtual VclAbstractDialog * CreateVclSwViewDialog(SwView& rView) override; - virtual AbstractInsTableDlg* CreateInsTableDlg(SwView& rView) override; - virtual AbstractJavaEditDialog* CreateJavaEditDialog(vcl::Window* pParent, + virtual VclPtr<VclAbstractDialog> CreateTitlePageDlg ( vcl::Window * pParent ) override; + virtual VclPtr<VclAbstractDialog> CreateVclSwViewDialog(SwView& rView) override; + virtual VclPtr<AbstractInsTableDlg> CreateInsTableDlg(SwView& rView) override; + virtual VclPtr<AbstractJavaEditDialog> CreateJavaEditDialog(vcl::Window* pParent, SwWrtShell* pWrtSh) override; - virtual AbstractMailMergeDlg* CreateMailMergeDlg( + virtual VclPtr<AbstractMailMergeDlg> CreateMailMergeDlg( vcl::Window* pParent, SwWrtShell& rSh, const OUString& rSourceName, const OUString& rTableName, sal_Int32 nCommandType, const css::uno::Reference< css::sdbc::XConnection>& xConnection ) override; - virtual AbstractMailMergeCreateFromDlg* CreateMailMergeCreateFromDlg(vcl::Window* pParent) override; - virtual AbstractMailMergeFieldConnectionsDlg* CreateMailMergeFieldConnectionsDlg(vcl::Window* pParent) override; - virtual VclAbstractDialog* CreateMultiTOXMarkDlg(vcl::Window* pParent, SwTOXMgr &rTOXMgr) override; - virtual SfxAbstractTabDialog* CreateSwTabDialog( int nResId, + virtual VclPtr<AbstractMailMergeCreateFromDlg> CreateMailMergeCreateFromDlg(vcl::Window* pParent) override; + virtual VclPtr<AbstractMailMergeFieldConnectionsDlg> CreateMailMergeFieldConnectionsDlg(vcl::Window* pParent) override; + virtual VclPtr<VclAbstractDialog> CreateMultiTOXMarkDlg(vcl::Window* pParent, SwTOXMgr &rTOXMgr) override; + virtual VclPtr<SfxAbstractTabDialog> CreateSwTabDialog( int nResId, vcl::Window* pParent, const SfxItemSet* pSwItemSet, SwWrtShell &) override; - virtual AbstractMultiTOXTabDialog* CreateMultiTOXTabDialog( + virtual VclPtr<AbstractMultiTOXTabDialog> CreateMultiTOXTabDialog( vcl::Window* pParent, const SfxItemSet& rSet, SwWrtShell &rShell, SwTOXBase* pCurTOX, bool bGlobal) override; - virtual AbstractEditRegionDlg* CreateEditRegionDlg(vcl::Window* pParent, SwWrtShell& rWrtSh) override; - virtual AbstractInsertSectionTabDialog* CreateInsertSectionTabDialog( + virtual VclPtr<AbstractEditRegionDlg> CreateEditRegionDlg(vcl::Window* pParent, SwWrtShell& rWrtSh) override; + virtual VclPtr<AbstractInsertSectionTabDialog> CreateInsertSectionTabDialog( vcl::Window* pParent, const SfxItemSet& rSet, SwWrtShell& rSh) override; - virtual AbstractMarkFloatDlg* CreateIndexMarkFloatDlg( + virtual VclPtr<AbstractMarkFloatDlg> CreateIndexMarkFloatDlg( SfxBindings* pBindings, SfxChildWindow* pChild, vcl::Window *pParent, SfxChildWinInfo* pInfo) override; - virtual AbstractMarkFloatDlg* CreateAuthMarkFloatDlg( + virtual VclPtr<AbstractMarkFloatDlg> CreateAuthMarkFloatDlg( SfxBindings* pBindings, SfxChildWindow* pChild, vcl::Window *pParent, SfxChildWinInfo* pInfo) override; - virtual VclAbstractDialog * CreateIndexMarkModalDlg( + virtual VclPtr<VclAbstractDialog> CreateIndexMarkModalDlg( vcl::Window *pParent, SwWrtShell& rSh, SwTOXMark* pCurTOXMark ) override; - virtual AbstractMailMergeWizard* CreateMailMergeWizard(SwView& rView, std::shared_ptr<SwMailMergeConfigItem>& rConfigItem) override; + virtual VclPtr<AbstractMailMergeWizard> CreateMailMergeWizard(SwView& rView, std::shared_ptr<SwMailMergeConfigItem>& rConfigItem) override; virtual GlossaryGetCurrGroup GetGlossaryCurrGroupFunc() override; virtual GlossarySetActGroup SetGlossaryActGroupFunc() override; diff --git a/sw/source/uibase/app/apphdl.cxx b/sw/source/uibase/app/apphdl.cxx index 8d575cc80672..00a9f81b9718 100644 --- a/sw/source/uibase/app/apphdl.cxx +++ b/sw/source/uibase/app/apphdl.cxx @@ -382,7 +382,7 @@ class SwMailMergeWizardExecutor : public salhelper::SimpleReferenceObject { SwView* m_pView; // never owner SwView* m_pView2Close; // never owner - AbstractMailMergeWizard* m_pWizard; // always owner + VclPtr<AbstractMailMergeWizard> m_pWizard; // always owner bool m_bDestroyMMToolbarOnCancel; DECL_LINK( EndDialogHdl, Dialog&, void ); @@ -611,15 +611,15 @@ IMPL_LINK_NOARG( SwMailMergeWizardExecutor, EndDialogHdl, Dialog&, void ) IMPL_LINK_NOARG(SwMailMergeWizardExecutor, DestroyDialogHdl, void*, void) { - delete m_pWizard; - m_pWizard = nullptr; + m_pWizard.disposeAndClear(); release(); } IMPL_STATIC_LINK(SwMailMergeWizardExecutor, DestroyWizardHdl, void*, pDialog, void ) { - delete static_cast<AbstractMailMergeWizard*>(pDialog); + VclPtr<AbstractMailMergeWizard> p = static_cast<AbstractMailMergeWizard*>(pDialog); + p.disposeAndClear(); } IMPL_LINK_NOARG(SwMailMergeWizardExecutor, CancelHdl, void*, void) @@ -653,8 +653,7 @@ IMPL_LINK_NOARG(SwMailMergeWizardExecutor, CancelHdl, void*, void) xMMConfig->Commit(); } - delete m_pWizard; - m_pWizard = nullptr; + m_pWizard.disposeAndClear(); release(); } diff --git a/sw/source/uibase/app/docsh2.cxx b/sw/source/uibase/app/docsh2.cxx index 8b5a6d95f704..28553126d76d 100644 --- a/sw/source/uibase/app/docsh2.cxx +++ b/sw/source/uibase/app/docsh2.cxx @@ -372,9 +372,10 @@ void SwDocShell::Execute(SfxRequest& rReq) aSet.Put( *static_cast<const SfxBoolItem*>(pOpenSmartTagOptionsItem) ); SfxAbstractDialogFactory* pFact = SfxAbstractDialogFactory::Create(); - SfxAbstractTabDialog* pDlg = pFact->CreateAutoCorrTabDialog( &aSet ); + VclPtr<SfxAbstractTabDialog> pDlg = pFact->CreateAutoCorrTabDialog( &aSet ); pDlg->Execute(); - delete pDlg; + pDlg.disposeAndClear(); + rACW.SetLockWordLstLocked( bOldLocked ); diff --git a/sw/source/uibase/app/docst.cxx b/sw/source/uibase/app/docst.cxx index bd551ffdc74b..cd5745715e36 100644 --- a/sw/source/uibase/app/docst.cxx +++ b/sw/source/uibase/app/docst.cxx @@ -554,7 +554,7 @@ private: sal_uInt16 m_nRet; rtl::Reference< SwDocStyleSheet > m_xTmp; SfxStyleFamily m_nFamily; - SfxAbstractApplyTabDialog *m_pDlg; + VclPtr<SfxAbstractApplyTabDialog> m_pDlg; rtl::Reference< SfxStyleSheetBasePool > m_xBasePool; bool m_bModified; }; diff --git a/sw/source/uibase/dbui/dbmgr.cxx b/sw/source/uibase/dbui/dbmgr.cxx index 55e0bcf233c0..4315cdda37d7 100644 --- a/sw/source/uibase/dbui/dbmgr.cxx +++ b/sw/source/uibase/dbui/dbmgr.cxx @@ -307,14 +307,14 @@ void SwDataSourceRemovedListener::Dispose() struct SwDBManager_Impl { - SwDSParam* pMergeData; - AbstractMailMergeDlg* pMergeDialog; + SwDSParam* pMergeData; + VclPtr<AbstractMailMergeDlg> pMergeDialog; ::rtl::Reference<SwConnectionDisposedListener_Impl> m_xDisposeListener; rtl::Reference<SwDataSourceRemovedListener> m_xDataSourceRemovedListener; explicit SwDBManager_Impl(SwDBManager& rDBManager) :pMergeData(nullptr) - ,pMergeDialog(nullptr) + ,pMergeDialog() , m_xDisposeListener(new SwConnectionDisposedListener_Impl(rDBManager)) {} @@ -2910,7 +2910,7 @@ void SwDBManager::ExecuteFormLetter( SwWrtShell& rSh, //this has been done by the SwConnectionDisposedListener_Impl already } } - DELETEZ(pImpl->pMergeDialog); + pImpl->pMergeDialog.disposeAndClear(); } void SwDBManager::InsertText(SwWrtShell& rSh, diff --git a/sw/source/uibase/dialog/wordcountwrapper.cxx b/sw/source/uibase/dialog/wordcountwrapper.cxx index 2b5e963484f7..031d034e26bb 100644 --- a/sw/source/uibase/dialog/wordcountwrapper.cxx +++ b/sw/source/uibase/dialog/wordcountwrapper.cxx @@ -28,6 +28,11 @@ SwWordCountWrapper::SwWordCountWrapper( vcl::Window *pParentWindow, SetWindow(xAbstDlg->GetWindow()); } +SwWordCountWrapper::~SwWordCountWrapper() +{ + xAbstDlg.disposeAndClear(); +} + SfxChildWinInfo SwWordCountWrapper::GetInfo() const { SfxChildWinInfo aInfo = SfxChildWindow::GetInfo(); diff --git a/sw/source/uibase/inc/fldwrap.hxx b/sw/source/uibase/inc/fldwrap.hxx index d7abe750b8e6..0ebd58b45a45 100644 --- a/sw/source/uibase/inc/fldwrap.hxx +++ b/sw/source/uibase/inc/fldwrap.hxx @@ -25,7 +25,7 @@ class AbstractSwFieldDlg; class SwFieldDlgWrapper : public SwChildWinWrapper { public: - AbstractSwFieldDlg * pDlgInterface; + VclPtr<AbstractSwFieldDlg> pDlgInterface; SwFieldDlgWrapper( vcl::Window* pParent, sal_uInt16 nId, SfxBindings* pBindings, SfxChildWinInfo* pInfo ); @@ -39,7 +39,7 @@ public: class SwFieldDataOnlyDlgWrapper : public SwChildWinWrapper { public: - AbstractSwFieldDlg * pDlgInterface; + VclPtr<AbstractSwFieldDlg> pDlgInterface; SwFieldDataOnlyDlgWrapper( vcl::Window* pParent, sal_uInt16 nId, SfxBindings* pBindings, SfxChildWinInfo* pInfo ); diff --git a/sw/source/uibase/inc/idxmrk.hxx b/sw/source/uibase/inc/idxmrk.hxx index 99e5cbf8a32b..c29252121c09 100644 --- a/sw/source/uibase/inc/idxmrk.hxx +++ b/sw/source/uibase/inc/idxmrk.hxx @@ -27,7 +27,7 @@ class SwWrtShell; class SwInsertIdxMarkWrapper : public SfxChildWindow { - AbstractMarkFloatDlg* pAbstDlg; + VclPtr<AbstractMarkFloatDlg> pAbstDlg; protected: SwInsertIdxMarkWrapper( vcl::Window *pParentWindow, sal_uInt16 nId, @@ -42,7 +42,7 @@ public: class SwInsertAuthMarkWrapper : public SfxChildWindow { - AbstractMarkFloatDlg* pAbstDlg; + VclPtr<AbstractMarkFloatDlg> pAbstDlg; protected: SwInsertAuthMarkWrapper( vcl::Window *pParentWindow, sal_uInt16 nId, diff --git a/sw/source/uibase/inc/wordcountdialog.hxx b/sw/source/uibase/inc/wordcountdialog.hxx index 6a2bdd66333a..b8ebc2344db4 100644 --- a/sw/source/uibase/inc/wordcountdialog.hxx +++ b/sw/source/uibase/inc/wordcountdialog.hxx @@ -63,16 +63,16 @@ public: class SwWordCountWrapper : public SfxChildWindow { - std::unique_ptr<AbstractSwWordCountFloatDlg> xAbstDlg; + VclPtr<AbstractSwWordCountFloatDlg> xAbstDlg; protected: SwWordCountWrapper( vcl::Window *pParentWindow, sal_uInt16 nId, SfxBindings* pBindings, SfxChildWinInfo* pInfo ); - SFX_DECL_CHILDWINDOW_WITHID(SwWordCountWrapper); public: + virtual ~SwWordCountWrapper() override; void UpdateCounts(); void SetCounts(const SwDocStat &rCurrCnt, const SwDocStat &rDocStat); }; diff --git a/sw/source/uibase/wrtsh/wrtsh2.cxx b/sw/source/uibase/wrtsh/wrtsh2.cxx index cb9b7d3862ef..c9690a44af7e 100644 --- a/sw/source/uibase/wrtsh/wrtsh2.cxx +++ b/sw/source/uibase/wrtsh/wrtsh2.cxx @@ -222,7 +222,7 @@ class FieldDeletionModify : public SwModify } } private: - AbstractFieldInputDlg* mpInputFieldDlg; + VclPtr<AbstractFieldInputDlg> mpInputFieldDlg; SwFormatField* mpFormatField; }; diff --git a/vcl/source/window/msgbox.cxx b/vcl/source/window/msgbox.cxx index d7b3bf035430..2b0328fa1c65 100644 --- a/vcl/source/window/msgbox.cxx +++ b/vcl/source/window/msgbox.cxx @@ -372,8 +372,13 @@ Size MessBox::GetOptimalSize() const } InfoBox::InfoBox( vcl::Window* pParent, const OUString& rMessage ) : - InfoBox( pParent, WB_OK | WB_DEF_OK, rMessage ) + MessBox( pParent, WB_OK | WB_DEF_OK, OUString(), rMessage ) { + // Default Text is the display title from the application + if ( GetText().isEmpty() ) + SetText( Application::GetDisplayName() ); + + SetImage( InfoBox::GetStandardImage() ); } InfoBox::InfoBox( vcl::Window* pParent, WinBits nStyle, const OUString& rMessage ) : diff --git a/vcl/source/window/window.cxx b/vcl/source/window/window.cxx index fdd43b81f718..2c97ee561662 100644 --- a/vcl/source/window/window.cxx +++ b/vcl/source/window/window.cxx @@ -93,8 +93,13 @@ Window::Window( WindowType nType ) : } Window::Window( vcl::Window* pParent, WinBits nStyle ) : - Window(WINDOW_WINDOW) + mpWindowImpl(new WindowImpl( WINDOW_WINDOW )) { + meOutDevType = OUTDEV_WINDOW; + + // true: this outdev will be mirrored if RTL window layout (UI mirroring) is globally active + mbEnableRTL = AllSettings::GetLayoutRTL(); + ImplInit( pParent, nStyle, nullptr ); } |