summaryrefslogtreecommitdiff
path: root/sw
diff options
context:
space:
mode:
authorNoel <noel.grandin@collabora.co.uk>2021-03-05 10:47:16 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2021-03-07 13:24:51 +0100
commit1d2773807f6d2deb1181ef4b14fbdd49ca1d5c14 (patch)
tree788ef3ef220549c9785bcf1f5b35becc176300d4 /sw
parente4e80ed313882f9ea1b309054e5aa3e839586516 (diff)
ref-count SdrPage
which simplifies ownership handling, particularly with regard to undo/redo Change-Id: Ie8f300ebfdae6db3c06f78a87e35a07497d6b825 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/111991 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'sw')
-rw-r--r--sw/inc/dpage.hxx2
-rw-r--r--sw/inc/drawdoc.hxx2
-rw-r--r--sw/source/core/doc/DocumentDrawModelManager.cxx6
-rw-r--r--sw/source/core/doc/doclay.cxx5
-rw-r--r--sw/source/core/draw/dpage.cxx4
-rw-r--r--sw/source/core/draw/drawdoc.cxx4
-rw-r--r--sw/source/core/frmedt/feshview.cxx5
7 files changed, 15 insertions, 13 deletions
diff --git a/sw/inc/dpage.hxx b/sw/inc/dpage.hxx
index f144663ebac9..2f06a9c8d0fc 100644
--- a/sw/inc/dpage.hxx
+++ b/sw/inc/dpage.hxx
@@ -39,7 +39,7 @@ public:
explicit SwDPage(SwDrawModel& rNewModel, bool bMasterPage);
virtual ~SwDPage() override;
- virtual SwDPage* CloneSdrPage(SdrModel& rTargetModel) const override;
+ virtual rtl::Reference<SdrPage> CloneSdrPage(SdrModel& rTargetModel) const override;
// #i3694#
// This GetOffset() method is not needed anymore, it even leads to errors.
diff --git a/sw/inc/drawdoc.hxx b/sw/inc/drawdoc.hxx
index 05762bb577ae..d80be90bc220 100644
--- a/sw/inc/drawdoc.hxx
+++ b/sw/inc/drawdoc.hxx
@@ -37,7 +37,7 @@ public:
/// Put needed items for XPropertyList entries from the DrawModel.
void PutAreaListItems(SfxItemSet& rSet) const;
- virtual SdrPage* AllocPage(bool bMasterPage) override;
+ virtual rtl::Reference<SdrPage> AllocPage(bool bMasterPage) override;
virtual css::uno::Reference<css::embed::XStorage> GetDocumentStorage() const override;
diff --git a/sw/source/core/doc/DocumentDrawModelManager.cxx b/sw/source/core/doc/DocumentDrawModelManager.cxx
index 947a7825ea27..c3f09b767eea 100644
--- a/sw/source/core/doc/DocumentDrawModelManager.cxx
+++ b/sw/source/core/doc/DocumentDrawModelManager.cxx
@@ -104,8 +104,8 @@ void DocumentDrawModelManager::InitDrawModel()
mnInvisibleControls = mpDrawModel->GetLayerAdmin().NewLayer( sLayerNm )->GetID();
}
- SdrPage* pMasterPage = mpDrawModel->AllocPage( false );
- mpDrawModel->InsertPage( pMasterPage );
+ rtl::Reference<SdrPage> pMasterPage = mpDrawModel->AllocPage( false );
+ mpDrawModel->InsertPage( pMasterPage.get() );
SAL_INFO( "sw.doc", "after create DrawDocument" );
SdrOutliner& rOutliner = mpDrawModel->GetDrawOutliner();
if (!utl::ConfigManager::IsFuzzing())
@@ -143,7 +143,7 @@ void DocumentDrawModelManager::InitDrawModel()
// use pMasterPage instead of a new created SdrPage
// mpDrawModel->AllocPage( FALSE );
// mpDrawModel->InsertPage( pDrawPage );
- SdrPage* pDrawPage = pMasterPage;
+ SdrPage* pDrawPage = pMasterPage.get();
pRoot->SetDrawPage( pDrawPage );
pDrawPage->SetSize( pRoot->getFrameArea().SSize() );
}
diff --git a/sw/source/core/doc/doclay.cxx b/sw/source/core/doc/doclay.cxx
index bd0b40063a8e..c034a2b477a3 100644
--- a/sw/source/core/doc/doclay.cxx
+++ b/sw/source/core/doc/doclay.cxx
@@ -109,8 +109,9 @@ SdrObject* SwDoc::CloneSdrObj( const SdrObject& rObj, bool bMoveWithinDoc,
SdrPage *pPg = getIDocumentDrawModelAccess().GetOrCreateDrawModel()->GetPage( 0 );
if( !pPg )
{
- pPg = getIDocumentDrawModelAccess().GetDrawModel()->AllocPage( false );
- getIDocumentDrawModelAccess().GetDrawModel()->InsertPage( pPg );
+ auto pNewPage = getIDocumentDrawModelAccess().GetDrawModel()->AllocPage( false );
+ getIDocumentDrawModelAccess().GetDrawModel()->InsertPage( pNewPage.get() );
+ pPg = pNewPage.get();
}
// TTTT Clone directly to target SdrModel
diff --git a/sw/source/core/draw/dpage.cxx b/sw/source/core/draw/dpage.cxx
index 4601d8f2e7a6..63a7c9e8f0fc 100644
--- a/sw/source/core/draw/dpage.cxx
+++ b/sw/source/core/draw/dpage.cxx
@@ -66,10 +66,10 @@ void SwDPage::lateInit(const SwDPage& rSrcPage)
}
}
-SwDPage* SwDPage::CloneSdrPage(SdrModel& rTargetModel) const
+rtl::Reference<SdrPage> SwDPage::CloneSdrPage(SdrModel& rTargetModel) const
{
SwDrawModel& rSwDrawModel(static_cast< SwDrawModel& >(rTargetModel));
- SwDPage* pClonedSwDPage(
+ rtl::Reference<SwDPage> pClonedSwDPage(
new SwDPage(
rSwDrawModel,
IsMasterPage()));
diff --git a/sw/source/core/draw/drawdoc.cxx b/sw/source/core/draw/drawdoc.cxx
index 401c9cf9c980..5735f36c83bb 100644
--- a/sw/source/core/draw/drawdoc.cxx
+++ b/sw/source/core/draw/drawdoc.cxx
@@ -93,9 +93,9 @@ SwDrawModel::~SwDrawModel()
*
* @return Pointer to the new page.
*/
-SdrPage* SwDrawModel::AllocPage(bool bMasterPage)
+rtl::Reference<SdrPage> SwDrawModel::AllocPage(bool bMasterPage)
{
- SwDPage* pPage = new SwDPage(*this, bMasterPage);
+ rtl::Reference<SwDPage> pPage = new SwDPage(*this, bMasterPage);
pPage->SetName("Controls");
return pPage;
}
diff --git a/sw/source/core/frmedt/feshview.cxx b/sw/source/core/frmedt/feshview.cxx
index 691f60ca3592..c4145ddde43d 100644
--- a/sw/source/core/frmedt/feshview.cxx
+++ b/sw/source/core/frmedt/feshview.cxx
@@ -1992,8 +1992,9 @@ bool SwFEShell::ImpEndCreate()
if( !pPg )
{
SdrModel* pTmpSdrModel = getIDocumentDrawModelAccess().GetDrawModel();
- pPg = pTmpSdrModel->AllocPage( false );
- pTmpSdrModel->InsertPage( pPg );
+ auto pNewPage = pTmpSdrModel->AllocPage( false );
+ pTmpSdrModel->InsertPage( pNewPage.get() );
+ pPg = pNewPage.get();
}
pPg->RecalcObjOrdNums();
SdrObject* pRemovedObject = pPg->RemoveObject( rSdrObj.GetOrdNumDirect() );