From 73813f23fd3dc708d3d4eeb553686f5d967b21dd Mon Sep 17 00:00:00 2001 From: Luboš Luňák Date: Fri, 25 Mar 2011 17:32:17 +0100 Subject: more sensible SdrObject::Clone() and SdrObject::operator=() Virtual operator=() is IMO pointless, and especially in a class hierarchy like SdrObject it's pretty unlikely one could reasonably assign any SdrObject-based object to any other one. Moreover, it was actually only used in Clone(), which was almost never reimplemented, so the more sensible choice is to have non-virtual operator= and virtual Clone() always being reimplemented and using that. This commit also fixes various smaller or bigger, er, interesting details in the various operator= implementations. --- basctl/source/dlged/dlgedobj.cxx | 15 +++------------ basctl/source/inc/dlgedobj.hxx | 3 +-- 2 files changed, 4 insertions(+), 14 deletions(-) (limited to 'basctl') diff --git a/basctl/source/dlged/dlgedobj.cxx b/basctl/source/dlged/dlgedobj.cxx index c2ab69331f2a..315b4a4b7c37 100644 --- a/basctl/source/dlged/dlgedobj.cxx +++ b/basctl/source/dlged/dlgedobj.cxx @@ -979,16 +979,14 @@ void DlgEdObj::clonedFrom(const DlgEdObj* _pSource) //---------------------------------------------------------------------------- -SdrObject* DlgEdObj::Clone() const +DlgEdObj* DlgEdObj::Clone() const { - SdrObject* pReturn = SdrUnoObj::Clone(); - - DlgEdObj* pDlgEdObj = PTR_CAST(DlgEdObj, pReturn); + DlgEdObj* pDlgEdObj = CloneHelper< DlgEdObj >(); DBG_ASSERT( pDlgEdObj != NULL, "DlgEdObj::Clone: invalid clone!" ); if ( pDlgEdObj ) pDlgEdObj->clonedFrom( this ); - return pReturn; + return pDlgEdObj; } //---------------------------------------------------------------------------- @@ -1005,13 +1003,6 @@ SdrObject* DlgEdObj::getFullDragClone() const //---------------------------------------------------------------------------- -void DlgEdObj::operator= (const SdrObject& rObj) -{ - SdrUnoObj::operator= (rObj); -} - -//---------------------------------------------------------------------------- - void DlgEdObj::NbcMove( const Size& rSize ) { SdrUnoObj::NbcMove( rSize ); diff --git a/basctl/source/inc/dlgedobj.hxx b/basctl/source/inc/dlgedobj.hxx index ab8dbf3fa10e..cbb6b6b67b26 100644 --- a/basctl/source/inc/dlgedobj.hxx +++ b/basctl/source/inc/dlgedobj.hxx @@ -104,8 +104,7 @@ public: virtual sal_uInt32 GetObjInventor() const; virtual sal_uInt16 GetObjIdentifier() const; - virtual SdrObject* Clone() const; // not working yet - virtual void operator= (const SdrObject& rObj); // not working yet + virtual DlgEdObj* Clone() const; // not working yet virtual void clonedFrom(const DlgEdObj* _pSource); // not working yet // FullDrag support -- cgit v1.2.3