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 = CloneHelper< DlgEdObj >();
DlgEdObj* pDlgEdObj = PTR_CAST(DlgEdObj, pReturn);
DBG_ASSERT( pDlgEdObj != NULL, "DlgEdObj::Clone: invalid clone!" ); DBG_ASSERT( pDlgEdObj != NULL, "DlgEdObj::Clone: invalid clone!" );
if ( pDlgEdObj ) if ( pDlgEdObj )
pDlgEdObj->clonedFrom( this ); 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 ) void DlgEdObj::NbcMove( const Size& rSize )
{ {
SdrUnoObj::NbcMove( rSize ); SdrUnoObj::NbcMove( rSize );

View File

@@ -104,8 +104,7 @@ public:
virtual sal_uInt32 GetObjInventor() const; virtual sal_uInt32 GetObjInventor() const;
virtual sal_uInt16 GetObjIdentifier() const; virtual sal_uInt16 GetObjIdentifier() const;
virtual SdrObject* Clone() const; // not working yet virtual DlgEdObj* Clone() const; // not working yet
virtual void operator= (const SdrObject& rObj); // not working yet
virtual void clonedFrom(const DlgEdObj* _pSource); // not working yet virtual void clonedFrom(const DlgEdObj* _pSource); // not working yet
// FullDrag support // FullDrag support