diff options
author | Caolán McNamara <caolanm@redhat.com> | 2011-08-09 21:00:20 +0000 |
---|---|---|
committer | Noel Power <noel.power@novell.com> | 2011-08-10 10:12:57 +0100 |
commit | 1e7daaf843293ecac51dc3a4c93bb85bf6823264 (patch) | |
tree | 8a54cac15c2740210f677a6da5e433b5925917c2 | |
parent | 6b6cc121c420f2b88e4087e3c2f8b882fda9c24c (diff) |
Resolves: fdo#32177 add a modification listener on new XDocumentProperties
Signed-off-by: Noel Power <noel.power@novell.com>
-rw-r--r-- | sfx2/inc/sfx2/sfxbasemodel.hxx | 2 | ||||
-rw-r--r-- | sfx2/source/doc/sfxbasemodel.cxx | 18 |
2 files changed, 15 insertions, 5 deletions
diff --git a/sfx2/inc/sfx2/sfxbasemodel.hxx b/sfx2/inc/sfx2/sfxbasemodel.hxx index f7b3101154..f52b6c6286 100644 --- a/sfx2/inc/sfx2/sfxbasemodel.hxx +++ b/sfx2/inc/sfx2/sfxbasemodel.hxx @@ -1505,6 +1505,8 @@ public: /** returns true if someone added a XEventListener to this XEventBroadcaster */ sal_Bool hasEventListeners() const; + void impl_setDocumentProperties( const ::com::sun::star::uno::Reference< ::com::sun::star::document::XDocumentProperties >& ); + protected: /* returns a unique id for the model that is valid as long as the document diff --git a/sfx2/source/doc/sfxbasemodel.cxx b/sfx2/source/doc/sfxbasemodel.cxx index 76e6b127f9..fb150a9689 100644 --- a/sfx2/source/doc/sfxbasemodel.cxx +++ b/sfx2/source/doc/sfxbasemodel.cxx @@ -893,6 +893,15 @@ uno::Reference< document::XDocumentInfo > SAL_CALL SfxBaseModel::getDocumentInfo return m_pData->m_xDocumentInfo; } + +void +SfxBaseModel::impl_setDocumentProperties( const uno::Reference< document::XDocumentProperties >& rxNewDocProps ) +{ + m_pData->m_xDocumentProperties.set(rxNewDocProps, uno::UNO_QUERY_THROW); + uno::Reference<util::XModifyBroadcaster> xMB(m_pData->m_xDocumentProperties, uno::UNO_QUERY_THROW); + xMB->addModifyListener(new SfxDocInfoListener_Impl(*m_pData->m_pObjectShell)); +} + void SfxBaseModel::setDocumentProperties( const uno::Reference< document::XDocumentProperties >& rxNewDocProps ) { @@ -900,8 +909,9 @@ SfxBaseModel::setDocumentProperties( const uno::Reference< document::XDocumentPr ::SolarMutexGuard aGuard; if ( impl_isDisposed() ) throw lang::DisposedException(); - m_pData->m_xDocumentProperties.set(rxNewDocProps, uno::UNO_QUERY_THROW); + impl_setDocumentProperties(rxNewDocProps); } + // document::XDocumentPropertiesSupplier: uno::Reference< document::XDocumentProperties > SAL_CALL SfxBaseModel::getDocumentProperties() @@ -910,13 +920,11 @@ SfxBaseModel::getDocumentProperties() SfxModelGuard aGuard( *this, SfxModelGuard::E_INITIALIZING ); if ( !m_pData->m_xDocumentProperties.is() ) { - uno::Reference< lang::XInitialization > xDocProps( + uno::Reference< document::XDocumentProperties > xDocProps( ::comphelper::getProcessServiceFactory()->createInstance( DEFINE_CONST_UNICODE("com.sun.star.document.DocumentProperties") ), uno::UNO_QUERY_THROW); - m_pData->m_xDocumentProperties.set(xDocProps, uno::UNO_QUERY_THROW); - uno::Reference<util::XModifyBroadcaster> xMB(m_pData->m_xDocumentProperties, uno::UNO_QUERY_THROW); - xMB->addModifyListener(new SfxDocInfoListener_Impl(*m_pData->m_pObjectShell)); + impl_setDocumentProperties(xDocProps); } return m_pData->m_xDocumentProperties; |