diff options
author | Noel <noel.grandin@collabora.co.uk> | 2021-03-05 10:47:16 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2021-03-07 13:24:51 +0100 |
commit | 1d2773807f6d2deb1181ef4b14fbdd49ca1d5c14 (patch) | |
tree | 788ef3ef220549c9785bcf1f5b35becc176300d4 /sc | |
parent | e4e80ed313882f9ea1b309054e5aa3e839586516 (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.hxx | 2 | ||||
-rw-r--r-- | sc/inc/drwlayer.hxx | 2 | ||||
-rw-r--r-- | sc/source/core/data/drawpage.cxx | 4 | ||||
-rw-r--r-- | sc/source/core/data/drwlayer.cxx | 6 | ||||
-rw-r--r-- | sc/source/ui/view/notemark.cxx | 4 |
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; |