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

Reply via email to