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.
This commit is contained in:
Luboš Luňák
2011-03-25 17:32:17 +01:00
parent 5a07c01977
commit 73813f23fd
2 changed files with 4 additions and 14 deletions

View File

@@ -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 );

View File

@@ -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