include/svx/svdpage.hxx | 6 ++--- svx/source/svdraw/svdpage.cxx | 46 ++++++++++++++++++++---------------------- 2 files changed, 25 insertions(+), 27 deletions(-)
New commits: commit 49455ff2fefcc5528a081ae896491c46f4c984a4 Author: Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk> AuthorDate: Mon Jun 2 08:02:08 2025 +0200 Commit: Tomaž Vajngerl <qui...@gmail.com> CommitDate: Wed Jun 4 17:10:38 2025 +0200 svx: store a ref to SdrPage, not a pointer in SdrPageProperties The constructor already takes a reference to SdrPage, but for some reason we store a pointer and then later we check if the pointer is not nullptr in some cases, which shouldn't be required. This changes the the pointer to reference and it simplifies the code a bit. Change-Id: Ib49f514d95e52a078eb55f08bfaaa70fecbea083 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/186121 Reviewed-by: Tomaž Vajngerl <qui...@gmail.com> Tested-by: Jenkins diff --git a/include/svx/svdpage.hxx b/include/svx/svdpage.hxx index 3d9c60401544..3d6cc600f775 100644 --- a/include/svx/svdpage.hxx +++ b/include/svx/svdpage.hxx @@ -321,10 +321,10 @@ class SVXCORE_DLLPUBLIC SdrPageProperties final : public SfxListener, public svl { private: // data - SdrPage* mpSdrPage; - SfxStyleSheet* mpStyleSheet; + SdrPage& mrSdrPage; + SfxStyleSheet* mpStyleSheet; std::shared_ptr<model::Theme> mpTheme; - SfxItemSet maProperties; + SfxItemSet maProperties; // internal helpers void ImpRemoveStyleSheet(); diff --git a/svx/source/svdraw/svdpage.cxx b/svx/source/svdraw/svdpage.cxx index 3c16e6421f97..2f754255967c 100644 --- a/svx/source/svdraw/svdpage.cxx +++ b/svx/source/svdraw/svdpage.cxx @@ -1197,7 +1197,10 @@ void SdrPageProperties::ImpAddStyleSheet(SfxStyleSheet& rNewStyleSheet) } } -static void ImpPageChange(SdrPage& rSdrPage) +namespace +{ + +void ImpPageChange(SdrPage& rSdrPage) { rSdrPage.ActionChanged(); rSdrPage.getSdrModelFromSdrPage().SetChanged(); @@ -1205,14 +1208,16 @@ static void ImpPageChange(SdrPage& rSdrPage) rSdrPage.getSdrModelFromSdrPage().Broadcast(aHint); } +} // end anonymous namespace + SdrPageProperties::SdrPageProperties(SdrPage& rSdrPage) - : mpSdrPage(&rSdrPage) + : mrSdrPage(rSdrPage) , mpStyleSheet(nullptr) , maProperties( - mpSdrPage->getSdrModelFromSdrPage().GetItemPool(), + mrSdrPage.getSdrModelFromSdrPage().GetItemPool(), svl::Items<XATTR_FILL_FIRST, XATTR_FILL_LAST>) { - if (!rSdrPage.IsMasterPage()) + if (!mrSdrPage.IsMasterPage()) { maProperties.Put(XFillStyleItem(drawing::FillStyle_NONE)); } @@ -1230,7 +1235,7 @@ void SdrPageProperties::Notify(SfxBroadcaster& /*rBC*/, const SfxHint& rHint) case SfxHintId::DataChanged : { // notify change, broadcast - ImpPageChange(*mpSdrPage); + ImpPageChange(mrSdrPage); break; } case SfxHintId::Dying : @@ -1245,29 +1250,28 @@ void SdrPageProperties::Notify(SfxBroadcaster& /*rBC*/, const SfxHint& rHint) bool SdrPageProperties::isUsedByModel() const { - assert(mpSdrPage); - return mpSdrPage->IsInserted(); + return mrSdrPage.IsInserted(); } void SdrPageProperties::PutItemSet(const SfxItemSet& rSet) { - OSL_ENSURE(!mpSdrPage->IsMasterPage(), "Item set at MasterPage Attributes (!)"); + OSL_ENSURE(!mrSdrPage.IsMasterPage(), "Item set at MasterPage Attributes (!)"); maProperties.Put(rSet); - ImpPageChange(*mpSdrPage); + ImpPageChange(mrSdrPage); } void SdrPageProperties::PutItem(const SfxPoolItem& rItem) { - OSL_ENSURE(!mpSdrPage->IsMasterPage(), "Item set at MasterPage Attributes (!)"); + OSL_ENSURE(!mrSdrPage.IsMasterPage(), "Item set at MasterPage Attributes (!)"); maProperties.Put(rItem); - ImpPageChange(*mpSdrPage); + ImpPageChange(mrSdrPage); } void SdrPageProperties::ClearItem(const sal_uInt16 nWhich) { maProperties.ClearItem(nWhich); - ImpPageChange(*mpSdrPage); + ImpPageChange(mrSdrPage); } void SdrPageProperties::SetStyleSheet(SfxStyleSheet* pStyleSheet) @@ -1281,37 +1285,31 @@ void SdrPageProperties::SetStyleSheet(SfxStyleSheet* pStyleSheet) ImpRemoveStyleSheet(); } - ImpPageChange(*mpSdrPage); + ImpPageChange(mrSdrPage); } void SdrPageProperties::setTheme(std::shared_ptr<model::Theme> const& pTheme) { - if (!mpSdrPage) - return; - // Only set the theme on a master page, else set it on the model - if (mpSdrPage->IsMasterPage()) + if (mrSdrPage.IsMasterPage()) { if (mpTheme != pTheme) mpTheme = pTheme; } else { - mpSdrPage->getSdrModelFromSdrPage().setTheme(pTheme); + mrSdrPage.getSdrModelFromSdrPage().setTheme(pTheme); } } std::shared_ptr<model::Theme> const& SdrPageProperties::getTheme() const { - // if set - page theme has priority + // If the page theme is available use that, else get the theme from the model if (mpTheme) return mpTheme; - // else the model theme - else if (mpSdrPage) - return mpSdrPage->getSdrModelFromSdrPage().getTheme(); - // else return empty shared_ptr - return mpTheme; + else + return mrSdrPage.getSdrModelFromSdrPage().getTheme(); } void SdrPageProperties::dumpAsXml(xmlTextWriterPtr pWriter) const