summaryrefslogtreecommitdiff
path: root/sc
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 /sc
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 'sc')
-rw-r--r--sc/inc/drawpage.hxx2
-rw-r--r--sc/inc/drwlayer.hxx2
-rw-r--r--sc/source/core/data/drawpage.cxx4
-rw-r--r--sc/source/core/data/drwlayer.cxx6
-rw-r--r--sc/source/ui/view/notemark.cxx4
5 files changed, 9 insertions, 9 deletions
diff --git a/sc/inc/drawpage.hxx b/sc/inc/drawpage.hxx
index 09e607ea88b8..ce1e5ed58ea3 100644
--- a/sc/inc/drawpage.hxx
+++ b/sc/inc/drawpage.hxx
@@ -33,7 +33,7 @@ public:
explicit ScDrawPage(ScDrawLayer& rNewModel, bool bMasterPage);
virtual ~ScDrawPage() override;
- virtual ScDrawPage* CloneSdrPage(SdrModel& rTargetModel) const override;
+ virtual rtl::Reference<SdrPage> CloneSdrPage(SdrModel& rTargetModel) const override;
virtual css::uno::Reference<css::uno::XInterface> createUnoPage() override;
};
diff --git a/sc/inc/drwlayer.hxx b/sc/inc/drwlayer.hxx
index 3e5119b8e65c..7cb266bdf600 100644
--- a/sc/inc/drwlayer.hxx
+++ b/sc/inc/drwlayer.hxx
@@ -114,7 +114,7 @@ public:
ScDrawLayer( ScDocument* pDocument, const OUString& rName );
virtual ~ScDrawLayer() override;
- virtual SdrPage* AllocPage(bool bMasterPage) override;
+ virtual rtl::Reference<SdrPage> AllocPage(bool bMasterPage) override;
virtual SdrModel* AllocModel() const override;
virtual void SetChanged( bool bFlg = true ) override;
diff --git a/sc/source/core/data/drawpage.cxx b/sc/source/core/data/drawpage.cxx
index 0adba889261f..6b6f029fb205 100644
--- a/sc/source/core/data/drawpage.cxx
+++ b/sc/source/core/data/drawpage.cxx
@@ -32,10 +32,10 @@ ScDrawPage::~ScDrawPage()
{
}
-ScDrawPage* ScDrawPage::CloneSdrPage(SdrModel& rTargetModel) const
+rtl::Reference<SdrPage> ScDrawPage::CloneSdrPage(SdrModel& rTargetModel) const
{
ScDrawLayer& rScDrawLayer(static_cast< ScDrawLayer& >(rTargetModel));
- ScDrawPage* pClonedScDrawPage(
+ rtl::Reference<ScDrawPage> pClonedScDrawPage(
new ScDrawPage(
rScDrawLayer,
IsMasterPage()));
diff --git a/sc/source/core/data/drwlayer.cxx b/sc/source/core/data/drwlayer.cxx
index 9729629514ef..8e74fb8d1686 100644
--- a/sc/source/core/data/drwlayer.cxx
+++ b/sc/source/core/data/drwlayer.cxx
@@ -351,7 +351,7 @@ void ScDrawLayer::UseHyphenator()
}
}
-SdrPage* ScDrawLayer::AllocPage(bool bMasterPage)
+rtl::Reference<SdrPage> ScDrawLayer::AllocPage(bool bMasterPage)
{
return new ScDrawPage(*this, bMasterPage);
}
@@ -381,8 +381,8 @@ bool ScDrawLayer::ScAddPage( SCTAB nTab )
if (bDrawIsInUndo)
return false; // not inserted
- ScDrawPage* pPage = static_cast<ScDrawPage*>(AllocPage( false ));
- InsertPage(pPage, static_cast<sal_uInt16>(nTab));
+ rtl::Reference<ScDrawPage> pPage = static_cast<ScDrawPage*>(AllocPage( false ).get());
+ InsertPage(pPage.get(), static_cast<sal_uInt16>(nTab));
if (bRecording)
AddCalcUndo(std::make_unique<SdrUndoNewPage>(*pPage));
diff --git a/sc/source/ui/view/notemark.cxx b/sc/source/ui/view/notemark.cxx
index 9a6417856b24..7b8dd7f6aef2 100644
--- a/sc/source/ui/view/notemark.cxx
+++ b/sc/source/ui/view/notemark.cxx
@@ -90,7 +90,7 @@ IMPL_LINK_NOARG(ScNoteMarker, TimeHdl, Timer *, void)
rOutliner.SetRefDevice(pPrinter);
}
- if( SdrPage* pPage = m_pModel->AllocPage( false ) )
+ if( rtl::Reference<SdrPage> pPage = m_pModel->AllocPage( false ) )
{
m_xObject = ScNoteUtil::CreateTempCaption( *m_pDoc, m_aDocPos, *pPage, m_aUserText, m_aVisRect, m_bLeft );
@@ -107,7 +107,7 @@ IMPL_LINK_NOARG(ScNoteMarker, TimeHdl, Timer *, void)
}
// Insert page so that the model recognise it and also deleted
- m_pModel->InsertPage( pPage );
+ m_pModel->InsertPage( pPage.get() );
}
m_bVisible = true;