summaryrefslogtreecommitdiff
path: root/sw
diff options
context:
space:
mode:
authorBjoern Michaelsen <bjoern.michaelsen@canonical.com>2015-03-28 02:24:21 +0100
committerBjoern Michaelsen <bjoern.michaelsen@canonical.com>2015-03-28 22:14:18 +0100
commite139d3f951c42ab8794eac976b4d5f575939dbb5 (patch)
treedc3481025eef29eb80a80a9d1e0258c3751bf12a /sw
parentd69d640c96aecb49546c9b69372d6ee0f7200895 (diff)
have a Reference instead of SwClient meddling
Change-Id: I484061f124e5eaadd6e08a17f91dd18faf30b871
Diffstat (limited to 'sw')
-rw-r--r--sw/inc/unoframe.hxx1
-rw-r--r--sw/source/core/unocore/unoframe.cxx19
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 );
}
}
}