include/svx/svdobj.hxx          |    2 +-
 svx/source/svdraw/svdobj.cxx    |    7 +------
 sw/source/core/draw/dflyobj.cxx |   11 +++++++++++
 sw/source/core/inc/dflyobj.hxx  |    5 ++++-
 4 files changed, 17 insertions(+), 8 deletions(-)

New commits:
commit b53b01a050bbb43cd571c428e86fc23a2fa5773c
Author:     Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk>
AuthorDate: Sat Feb 11 17:08:54 2023 +0900
Commit:     Tomaž Vajngerl <qui...@gmail.com>
CommitDate: Sun Mar 5 01:41:21 2023 +0000

    svx: make SdrObject abstract by making CloneSdrObject pure virtual
    
    This change makes SdrObject an abstract class that can't be as
    we don't want it to be instantiated. With this the ClonseSdrObject
    became a pure virtual function.
    
    With this change also the SwFlyDrawObj needs a implementation of
    the CloneSdrFunction, which was previously provided by SdrObject.
    
    Change-Id: I2efb8c1e6fac12b17ce497285067029d7da1c1fd
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/148239
    Tested-by: Jenkins
    Reviewed-by: Tomaž Vajngerl <qui...@gmail.com>

diff --git a/include/svx/svdobj.hxx b/include/svx/svdobj.hxx
index 08ef71a168a8..52923dc5b92e 100644
--- a/include/svx/svdobj.hxx
+++ b/include/svx/svdobj.hxx
@@ -442,7 +442,7 @@ public:
     virtual bool HasLimitedRotation() const;
 
     // Returns a copy of the object. Every inherited class must reimplement 
this.
-    virtual rtl::Reference<SdrObject> CloneSdrObject(SdrModel& rTargetModel) 
const;
+    virtual rtl::Reference<SdrObject> CloneSdrObject(SdrModel& rTargetModel) 
const = 0;
     // helper, since Clone always return the type of the current subclass
     template<class T>
     static rtl::Reference<T> Clone(T const & rObj, SdrModel& rTargetModel)
diff --git a/svx/source/svdraw/svdobj.cxx b/svx/source/svdraw/svdobj.cxx
index e733c2d83871..af9cac05631c 100644
--- a/svx/source/svdraw/svdobj.cxx
+++ b/svx/source/svdraw/svdobj.cxx
@@ -1048,11 +1048,6 @@ bool SdrObject::HasLimitedRotation() const
     return false;
 }
 
-rtl::Reference<SdrObject> SdrObject::CloneSdrObject(SdrModel& rTargetModel) 
const
-{
-    return new SdrObject(rTargetModel, *this);
-}
-
 OUString SdrObject::TakeObjNameSingul() const
 {
     OUString sName(SvxResId(STR_ObjNameSingulNONE));
@@ -3329,7 +3324,7 @@ rtl::Reference<SdrObject> SdrObjFactory::MakeNewObject(
                 }
             }
             break;
-            case SdrObjKind::NONE       : pObj=new SdrObject(rSdrModel);       
            break;
+            case SdrObjKind::NONE       : pObj = nullptr; break;
             case SdrObjKind::Group       : pObj=new SdrObjGroup(rSdrModel);    
             break;
             case SdrObjKind::Polygon       : pObj=new SdrPathObj(rSdrModel, 
SdrObjKind::Polygon       ); break;
             case SdrObjKind::PolyLine       : pObj=new SdrPathObj(rSdrModel, 
SdrObjKind::PolyLine       ); break;
diff --git a/sw/source/core/draw/dflyobj.cxx b/sw/source/core/draw/dflyobj.cxx
index 3095d5a2a6f4..45068cf1fd89 100644
--- a/sw/source/core/draw/dflyobj.cxx
+++ b/sw/source/core/draw/dflyobj.cxx
@@ -130,6 +130,12 @@ SwFlyDrawObj::SwFlyDrawObj(SdrModel& rSdrModel)
 {
 }
 
+SwFlyDrawObj::SwFlyDrawObj(SdrModel& rSdrModel, SwFlyDrawObj const& rSource)
+    : SdrObject(rSdrModel, rSource)
+    , mbIsTextBox(false)
+{
+}
+
 SwFlyDrawObj::~SwFlyDrawObj()
 {
 }
@@ -145,6 +151,11 @@ SdrObjKind SwFlyDrawObj::GetObjIdentifier() const
     return SdrObjKind::SwFlyDrawObjIdentifier;
 }
 
+rtl::Reference<SdrObject> SwFlyDrawObj::CloneSdrObject(SdrModel& rTargetModel) 
const
+{
+    return new SwFlyDrawObj(rTargetModel);
+}
+
 // TODO: Need own primitive to get the FlyFrame paint working
 namespace drawinglayer::primitive2d
 {
diff --git a/sw/source/core/inc/dflyobj.hxx b/sw/source/core/inc/dflyobj.hxx
index db853d2262b2..7e62bdaddefa 100644
--- a/sw/source/core/inc/dflyobj.hxx
+++ b/sw/source/core/inc/dflyobj.hxx
@@ -44,8 +44,11 @@ private:
 
 public:
     SwFlyDrawObj(SdrModel& rSdrModel);
+    SwFlyDrawObj(SdrModel& rSdrModel, SwFlyDrawObj const& rSource);
+
+    // for instantiation of this class while loading (via factory
+    virtual rtl::Reference<SdrObject> CloneSdrObject(SdrModel& rTargetModel) 
const override;
 
-    // for instantiation of this class while loading (via factory)
     virtual SdrInventor GetObjInventor()     const override;
     virtual SdrObjKind GetObjIdentifier()   const override;
     virtual bool IsTextBox() const override { return mbIsTextBox; }

Reply via email to