diff --git a/reportdesign/source/core/sdr/RptObject.cxx b/reportdesign/source/core/sdr/RptObject.cxx index 09bf340..9ed700e 100644 --- a/reportdesign/source/core/sdr/RptObject.cxx +++ b/reportdesign/source/core/sdr/RptObject.cxx @@ -944,15 +944,18 @@ uno::Reference< uno::XInterface > OUnoObject::getUnoShape() // ----------------------------------------------------------------------------- OUnoObject* OUnoObject::Clone() const { - OUnoObject* pClone = CloneHelper< OUnoObject >(); + SdrObject* pClone = SdrObjFactory::MakeNewObject(GetObjInventor(),GetObjIdentifier(), NULL); + if ( pClone ) { + *pClone = *this; + Reference xSource(const_cast(this)->getUnoShape(),uno::UNO_QUERY); Reference xDest(pClone->getUnoShape(),uno::UNO_QUERY); if ( xSource.is() && xDest.is() ) comphelper::copyProperties(xSource.get(),xDest.get()); } - return pClone; + return static_cast(pClone); } //---------------------------------------------------------------------------- // OOle2Obj @@ -1158,7 +1161,10 @@ uno::Reference< chart2::data::XDatabaseDataProvider > lcl_getDataProvider(const // Clone() soll eine komplette Kopie des Objektes erzeugen. OOle2Obj* OOle2Obj::Clone() const { - OOle2Obj* pObj = CloneHelper< OOle2Obj >(); + SdrObject* pFoo = SdrObjFactory::MakeNewObject(GetObjInventor(),GetObjIdentifier(), NULL); + *pFoo = *this; + OOle2Obj* pObj = static_cast(pFoo); + OReportModel* pRptModel = static_cast(GetModel()); svt::EmbeddedObjectRef::TryRunningState( pObj->GetObjRef() ); pObj->impl_createDataProvider_nothrow(pRptModel->getReportDefinition().get());