summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2011-11-25 20:16:36 +0000
committerCaolán McNamara <caolanm@redhat.com>2011-11-25 20:17:18 +0000
commit9eac8b2d2d5b77e1aa537a8e3756ffbbb10d7e0e (patch)
tree708b8f0f77f70064b51d63394f1830cf02f0e22c
parentcbb2b42f113e29609161d8bdbeb667a2164a4d1a (diff)
Resolves: fdo#39950 fix dnd crash from default assignment operators
-rw-r--r--reportdesign/inc/RptObject.hxx4
-rw-r--r--reportdesign/source/core/sdr/RptObject.cxx58
2 files changed, 41 insertions, 21 deletions
diff --git a/reportdesign/inc/RptObject.hxx b/reportdesign/inc/RptObject.hxx
index 056a06c4a522..4084a4770e32 100644
--- a/reportdesign/inc/RptObject.hxx
+++ b/reportdesign/inc/RptObject.hxx
@@ -226,2 +226,4 @@ public:
+ OOle2Obj& operator=(const OOle2Obj& rObj);
+
void initializeChart( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel>& _xModel);
@@ -277,2 +279,4 @@ public:
+ OUnoObject& operator=(const OUnoObject& rObj);
+
private:
diff --git a/reportdesign/source/core/sdr/RptObject.cxx b/reportdesign/source/core/sdr/RptObject.cxx
index 09bf34044676..b50945a6ea1c 100644
--- a/reportdesign/source/core/sdr/RptObject.cxx
+++ b/reportdesign/source/core/sdr/RptObject.cxx
@@ -943,14 +943,20 @@ uno::Reference< uno::XInterface > OUnoObject::getUnoShape()
}
-// -----------------------------------------------------------------------------
+
+OUnoObject& OUnoObject::operator=(const OUnoObject& rObj)
+{
+ if( this == &rObj )
+ return *this;
+ SdrUnoObj::operator=(rObj);
+
+ Reference<XPropertySet> xSource(const_cast<OUnoObject&>(rObj).getUnoShape(), uno::UNO_QUERY);
+ Reference<XPropertySet> xDest(getUnoShape(), uno::UNO_QUERY);
+ if ( xSource.is() && xDest.is() )
+ comphelper::copyProperties(xSource.get(), xDest.get());
+
+ return *this;
+}
+
OUnoObject* OUnoObject::Clone() const
{
- OUnoObject* pClone = CloneHelper< OUnoObject >();
- if ( pClone )
- {
- Reference<XPropertySet> xSource(const_cast<OUnoObject*>(this)->getUnoShape(),uno::UNO_QUERY);
- Reference<XPropertySet> xDest(pClone->getUnoShape(),uno::UNO_QUERY);
- if ( xSource.is() && xDest.is() )
- comphelper::copyProperties(xSource.get(),xDest.get());
- }
- return pClone;
+ return CloneHelper< OUnoObject >();
}
@@ -1156,13 +1162,15 @@ uno::Reference< chart2::data::XDatabaseDataProvider > lcl_getDataProvider(const
}
-// -----------------------------------------------------------------------------
-// Clone() soll eine komplette Kopie des Objektes erzeugen.
-OOle2Obj* OOle2Obj::Clone() const
+
+OOle2Obj& OOle2Obj::operator=(const OOle2Obj& rObj)
{
- OOle2Obj* pObj = CloneHelper< OOle2Obj >();
- OReportModel* pRptModel = static_cast<OReportModel*>(GetModel());
- svt::EmbeddedObjectRef::TryRunningState( pObj->GetObjRef() );
- pObj->impl_createDataProvider_nothrow(pRptModel->getReportDefinition().get());
+ if( this == &rObj )
+ return *this;
+ SdrOle2Obj::operator=(rObj);
- uno::Reference< chart2::data::XDatabaseDataProvider > xSource( lcl_getDataProvider(GetObjRef()) );
- uno::Reference< chart2::data::XDatabaseDataProvider > xDest( lcl_getDataProvider(pObj->GetObjRef()) );
+ OReportModel* pRptModel = static_cast<OReportModel*>(rObj.GetModel());
+ svt::EmbeddedObjectRef::TryRunningState( GetObjRef() );
+ impl_createDataProvider_nothrow(pRptModel->getReportDefinition().get());
+
+ uno::Reference< chart2::data::XDatabaseDataProvider > xSource( lcl_getDataProvider(rObj.GetObjRef()) );
+ uno::Reference< chart2::data::XDatabaseDataProvider > xDest( lcl_getDataProvider(GetObjRef()) );
if ( xSource.is() && xDest.is() )
@@ -1170,4 +1178,12 @@ OOle2Obj* OOle2Obj::Clone() const
- pObj->initializeChart(pRptModel->getReportDefinition().get());
- return pObj;
+ initializeChart(pRptModel->getReportDefinition().get());
+
+ return *this;
+}
+
+// -----------------------------------------------------------------------------
+// Clone() soll eine komplette Kopie des Objektes erzeugen.
+OOle2Obj* OOle2Obj::Clone() const
+{
+ return CloneHelper< OOle2Obj >();
}