[Libreoffice-commits] core.git: include/svx svx/source

Kohei Yoshida kohei.yoshida at gmail.com
Fri Dec 18 18:27:07 PST 2015


 include/svx/sdr/contact/objectcontactofobjlistpainter.hxx |    7 +--
 include/svx/svdpage.hxx                                   |   30 ++++++--------
 svx/source/sdr/contact/objectcontactofobjlistpainter.cxx  |    4 -
 svx/source/sdr/contact/viewobjectcontactofpageobj.cxx     |    2 
 svx/source/svdraw/svdpage.cxx                             |   24 +++++------
 5 files changed, 32 insertions(+), 35 deletions(-)

New commits:
commit 6b57529888f384307b88cf5ead5e3e477c6c03b1
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date:   Fri Dec 18 19:42:09 2015 -0500

    Use std::unique_ptr for mpViewContact member instance of SdrPage.
    
    And fix some const-incorrect-ness while at it.
    
    Change-Id: I0314c8e5b73f1a7edce040b2a57fbc5d1081d70c
    Reviewed-on: https://gerrit.libreoffice.org/20815
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Kohei Yoshida <libreoffice at kohei.us>
    Tested-by: Kohei Yoshida <libreoffice at kohei.us>

diff --git a/include/svx/sdr/contact/objectcontactofobjlistpainter.hxx b/include/svx/sdr/contact/objectcontactofobjlistpainter.hxx
index d9ee440..8a2d4da 100644
--- a/include/svx/sdr/contact/objectcontactofobjlistpainter.hxx
+++ b/include/svx/sdr/contact/objectcontactofobjlistpainter.hxx
@@ -34,7 +34,7 @@ class SVX_DLLPUBLIC ObjectContactPainter : public ObjectContact
 protected:
     // Hierarchy access methods
     virtual sal_uInt32 GetPaintObjectCount() const = 0;
-    virtual ViewContact& GetPaintObjectViewContact(sal_uInt32 nIndex) const = 0;
+    virtual ViewContact& GetPaintObjectViewContact(sal_uInt32 nIndex) = 0;
 
 public:
     // basic constructor/destructor
@@ -59,7 +59,7 @@ protected:
 
     // Hierarchy access methods
     virtual sal_uInt32 GetPaintObjectCount() const override;
-    virtual ViewContact& GetPaintObjectViewContact(sal_uInt32 nIndex) const override;
+    virtual ViewContact& GetPaintObjectViewContact(sal_uInt32 nIndex) override;
 
 public:
     // basic constructor/destructor
@@ -95,7 +95,7 @@ protected:
 
     // Hierarchy access methods
     virtual sal_uInt32 GetPaintObjectCount() const override;
-    virtual ViewContact& GetPaintObjectViewContact(sal_uInt32 nIndex) const override;
+    virtual ViewContact& GetPaintObjectViewContact(sal_uInt32 nIndex) override;
 
 public:
     // basic constructor
@@ -107,6 +107,7 @@ public:
     // set another page
     void SetStartPage(const SdrPage* pPage);
     const SdrPage* GetStartPage() const { return mxStartPage.get(); }
+    SdrPage* GetStartPage() { return mxStartPage.get(); }
 
     virtual OutputDevice* TryToGetOutputDevice() const override;
 };
diff --git a/include/svx/svdpage.hxx b/include/svx/svdpage.hxx
index 347beb3..7e1d15f 100644
--- a/include/svx/svdpage.hxx
+++ b/include/svx/svdpage.hxx
@@ -375,6 +375,14 @@ public:
 */
 class SVX_DLLPUBLIC SdrPage : public SdrObjList, public tools::WeakBase< SdrPage >
 {
+    // #i9076#
+    friend class SdrModel;
+    friend class SvxUnoDrawPagesAccess;
+
+    // this class uses its own UNO wrapper
+    // and thus has to set mxUnoPage (it also relies on mxUnoPage not being WeakRef)
+    friend class reportdesign::OSection;
+
     SdrPage& operator=(const SdrPage& rSrcPage) = delete;
 
     // start PageUser section
@@ -382,32 +390,20 @@ private:
     // #111111# PageUser section
     sdr::PageUserVector                                             maPageUsers;
 
+    std::unique_ptr<sdr::contact::ViewContact> mpViewContact;
+
 public:
     void AddPageUser(sdr::PageUser& rNewUser);
     void RemovePageUser(sdr::PageUser& rOldUser);
 
-
-    // end PageUser section
-
-
-    // #110094# DrawContact section
-private:
-    sdr::contact::ViewContact*                                      mpViewContact;
 protected:
     sdr::contact::ViewContact* CreateObjectSpecificViewContact();
 public:
-    sdr::contact::ViewContact& GetViewContact() const;
+    const sdr::contact::ViewContact& GetViewContact() const;
+    sdr::contact::ViewContact& GetViewContact();
 
     // #110094# DrawContact support: Methods for handling Page changes
-    void ActionChanged() const;
-
-    // #i9076#
-    friend class SdrModel;
-    friend class SvxUnoDrawPagesAccess;
-
-// this class uses its own UNO wrapper
-// and thus has to set mxUnoPage (it also relies on mxUnoPage not being WeakRef)
-friend class reportdesign::OSection;
+    void ActionChanged();
 
     sal_Int32 nWdt;     // Seitengroesse
     sal_Int32 nHgt;     // Seitengroesse
diff --git a/svx/source/sdr/contact/objectcontactofobjlistpainter.cxx b/svx/source/sdr/contact/objectcontactofobjlistpainter.cxx
index 5c9fb17..a55607e 100644
--- a/svx/source/sdr/contact/objectcontactofobjlistpainter.cxx
+++ b/svx/source/sdr/contact/objectcontactofobjlistpainter.cxx
@@ -45,7 +45,7 @@ sal_uInt32 ObjectContactOfObjListPainter::GetPaintObjectCount() const
     return maStartObjects.size();
 }
 
-ViewContact& ObjectContactOfObjListPainter::GetPaintObjectViewContact(sal_uInt32 nIndex) const
+ViewContact& ObjectContactOfObjListPainter::GetPaintObjectViewContact(sal_uInt32 nIndex)
 {
     const SdrObject* pObj = maStartObjects[nIndex];
     DBG_ASSERT(pObj, "ObjectContactOfObjListPainter: Corrupt SdrObjectVector (!)");
@@ -157,7 +157,7 @@ sal_uInt32 ObjectContactOfPagePainter::GetPaintObjectCount() const
     return (GetStartPage() ? 1L : 0L);
 }
 
-ViewContact& ObjectContactOfPagePainter::GetPaintObjectViewContact(sal_uInt32 /*nIndex*/) const
+ViewContact& ObjectContactOfPagePainter::GetPaintObjectViewContact(sal_uInt32 /*nIndex*/)
 {
     DBG_ASSERT(GetStartPage(), "ObjectContactOfPagePainter::GetPaintObjectViewContact: no StartPage set (!)");
     return GetStartPage()->GetViewContact();
diff --git a/svx/source/sdr/contact/viewobjectcontactofpageobj.cxx b/svx/source/sdr/contact/viewobjectcontactofpageobj.cxx
index 1376c37..03516df 100644
--- a/svx/source/sdr/contact/viewobjectcontactofpageobj.cxx
+++ b/svx/source/sdr/contact/viewobjectcontactofpageobj.cxx
@@ -120,7 +120,7 @@ void PagePrimitiveExtractor::Invoke()
 drawinglayer::primitive2d::Primitive2DContainer PagePrimitiveExtractor::createPrimitive2DSequenceForPage(const DisplayInfo& /*rDisplayInfo*/)
 {
     drawinglayer::primitive2d::Primitive2DContainer xRetval;
-    const SdrPage* pStartPage = GetStartPage();
+    SdrPage* pStartPage = GetStartPage();
 
     if(pStartPage)
     {
diff --git a/svx/source/svdraw/svdpage.cxx b/svx/source/svdraw/svdpage.cxx
index 583c489..d6679ff 100644
--- a/svx/source/svdraw/svdpage.cxx
+++ b/svx/source/svdraw/svdpage.cxx
@@ -1061,18 +1061,22 @@ sdr::contact::ViewContact* SdrPage::CreateObjectSpecificViewContact()
     return new sdr::contact::ViewContactOfSdrPage(*this);
 }
 
-sdr::contact::ViewContact& SdrPage::GetViewContact() const
+const sdr::contact::ViewContact& SdrPage::GetViewContact() const
 {
-    if(!mpViewContact)
-    {
-        const_cast< SdrPage* >(this)->mpViewContact =
-            const_cast< SdrPage* >(this)->CreateObjectSpecificViewContact();
-    }
+    if (!mpViewContact)
+        const_cast<SdrPage*>(this)->mpViewContact.reset(
+            const_cast<SdrPage*>(this)->CreateObjectSpecificViewContact());
 
     return *mpViewContact;
 }
 
+sdr::contact::ViewContact& SdrPage::GetViewContact()
+{
+    if (!mpViewContact)
+        mpViewContact.reset(CreateObjectSpecificViewContact());
 
+    return *mpViewContact;
+}
 
 void SdrPageProperties::ImpRemoveStyleSheet()
 {
@@ -1273,11 +1277,7 @@ SdrPage::~SdrPage()
 
     TRG_ClearMasterPage();
 
-    if(mpViewContact)
-    {
-        delete mpViewContact;
-        mpViewContact = nullptr;
-    }
+    mpViewContact.reset();
 
     {
         delete mpSdrPageProperties;
@@ -1780,7 +1780,7 @@ bool SdrPage::checkVisibility(
 }
 
 // DrawContact support: Methods for handling Page changes
-void SdrPage::ActionChanged() const
+void SdrPage::ActionChanged()
 {
     // Do necessary ViewContact actions
     GetViewContact().ActionChanged();


More information about the Libreoffice-commits mailing list