diff options
author | Bjoern Michaelsen <bjoern.michaelsen@canonical.com> | 2015-03-28 02:24:21 +0100 |
---|---|---|
committer | Bjoern Michaelsen <bjoern.michaelsen@canonical.com> | 2015-03-28 22:14:18 +0100 |
commit | e139d3f951c42ab8794eac976b4d5f575939dbb5 (patch) | |
tree | dc3481025eef29eb80a80a9d1e0258c3751bf12a /sw | |
parent | d69d640c96aecb49546c9b69372d6ee0f7200895 (diff) |
have a Reference instead of SwClient meddling
Change-Id: I484061f124e5eaadd6e08a17f91dd18faf30b871
Diffstat (limited to 'sw')
-rw-r--r-- | sw/inc/unoframe.hxx | 1 | ||||
-rw-r--r-- | sw/source/core/unocore/unoframe.cxx | 19 |
2 files changed, 8 insertions, 12 deletions
diff --git a/sw/inc/unoframe.hxx b/sw/inc/unoframe.hxx index fa27f9711966..edea72c932d7 100644 --- a/sw/inc/unoframe.hxx +++ b/sw/inc/unoframe.hxx @@ -302,6 +302,7 @@ typedef cppu::WeakImplHelper3 class SwXTextEmbeddedObject : public SwXTextEmbeddedObjectBaseClass, public SwXFrame { + css::uno::Reference<css::util::XModifyListener> m_xOLEListener; protected: friend class SwXFrame; // just for CreateXFrame diff --git a/sw/source/core/unocore/unoframe.cxx b/sw/source/core/unocore/unoframe.cxx index 2bef739cf03d..dd8dc932a879 100644 --- a/sw/source/core/unocore/unoframe.cxx +++ b/sw/source/core/unocore/unoframe.cxx @@ -3497,10 +3497,10 @@ uno::Reference<container::XNameReplace> SAL_CALL return new SwFrameEventDescriptor( *this ); } -SwXTextEmbeddedObject::SwXTextEmbeddedObject( SwDoc *pDoc ) : - SwXFrame(FLYCNTTYPE_OLE, aSwMapProvider.GetPropertySet(PROPERTY_MAP_EMBEDDED_OBJECT), pDoc) -{ -} +SwXTextEmbeddedObject::SwXTextEmbeddedObject( SwDoc *pDoc ) + : SwXFrame(FLYCNTTYPE_OLE, aSwMapProvider.GetPropertySet(PROPERTY_MAP_EMBEDDED_OBJECT), pDoc) + , m_xOLEListener(nullptr) +{ } SwXTextEmbeddedObject::SwXTextEmbeddedObject(SwFrmFmt& rFmt) : SwXFrame(rFmt, FLYCNTTYPE_OLE, aSwMapProvider.GetPropertySet(PROPERTY_MAP_EMBEDDED_OBJECT)) @@ -3621,15 +3621,10 @@ uno::Reference< embed::XEmbeddedObject > SAL_CALL SwXTextEmbeddedObject::getExte uno::Reference < lang::XComponent > xComp( xResult->getComponent(), uno::UNO_QUERY ); uno::Reference< util::XModifyBroadcaster > xBrdcst( xComp, uno::UNO_QUERY); uno::Reference< frame::XModel > xModel( xComp, uno::UNO_QUERY); - if( xBrdcst.is() && xModel.is() ) + if(xBrdcst.is() && xModel.is() && !m_xOLEListener.is()) { - SwXOLEListener* pListener = SwIterator<SwXOLEListener,SwFmt>( *pFmt ).First(); - //create a new one if the OLE object doesn't have one already - if( !pListener ) - { - uno::Reference< util::XModifyListener > xOLEListener = new SwXOLEListener(*pFmt, xModel); - xBrdcst->addModifyListener( xOLEListener ); - } + m_xOLEListener = new SwXOLEListener(*pFmt, xModel); + xBrdcst->addModifyListener( m_xOLEListener ); } } } |