diff options
author | Andre Fischer <af@apache.org> | 2012-06-20 11:58:32 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2013-05-11 18:53:28 +0100 |
commit | 11f8e53d6c9942185702552445a751c6f542942d (patch) | |
tree | 5caab2fb87553099d0b5e100af6f5c9a32cf15a0 /framework/source/accelerators | |
parent | 4bdbf360360bcc39929a18a4226a6ad1a22d8630 (diff) |
Resolves: #i120029# Unregister on dispose.
Patch by: zhang jianfang
Review by: Andre Fischer
(cherry picked from commit e0d5abb649958e48660357d3fa37ab6e9707b61f)
Conflicts:
framework/source/uielement/toolbarmanager.cxx
Change-Id: I4c6a112b27396fc7e5d42f3feef11ac1fe81efcd
Diffstat (limited to 'framework/source/accelerators')
3 files changed, 63 insertions, 2 deletions
diff --git a/framework/source/accelerators/acceleratorconfiguration.cxx b/framework/source/accelerators/acceleratorconfiguration.cxx index c2cd26cd33f8..01a43399b8dc 100644 --- a/framework/source/accelerators/acceleratorconfiguration.cxx +++ b/framework/source/accelerators/acceleratorconfiguration.cxx @@ -634,21 +634,23 @@ OUString XMLBasedAcceleratorConfiguration::impl_ts_getLocale() const //----------------------------------------------- // XInterface, XTypeProvider -DEFINE_XINTERFACE_7(XCUBasedAcceleratorConfiguration , +DEFINE_XINTERFACE_8(XCUBasedAcceleratorConfiguration , OWeakObject , DIRECT_INTERFACE(css::lang::XTypeProvider ), DIRECT_INTERFACE(css::ui::XAcceleratorConfiguration ), DIRECT_INTERFACE(css::util::XChangesListener ), DIRECT_INTERFACE(css::form::XReset ), + DIRECT_INTERFACE(css::lang::XComponent ), DIRECT_INTERFACE(css::ui::XUIConfigurationPersistence), DIRECT_INTERFACE(css::ui::XUIConfigurationStorage ), DIRECT_INTERFACE(css::ui::XUIConfiguration )) - DEFINE_XTYPEPROVIDER_7(XCUBasedAcceleratorConfiguration , + DEFINE_XTYPEPROVIDER_8(XCUBasedAcceleratorConfiguration , css::lang::XTypeProvider , css::ui::XAcceleratorConfiguration , css::util::XChangesListener , css::form::XReset , + css::lang::XComponent , css::ui::XUIConfigurationPersistence, css::ui::XUIConfigurationStorage , css::ui::XUIConfiguration ) @@ -1250,6 +1252,27 @@ void SAL_CALL XCUBasedAcceleratorConfiguration::disposing(const css::lang::Event } //----------------------------------------------- +void SAL_CALL XCUBasedAcceleratorConfiguration::dispose() + throw(css::uno::RuntimeException) +{ + // nop +} + +//----------------------------------------------- +void SAL_CALL XCUBasedAcceleratorConfiguration::addEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >& /*xListener*/ ) + throw(css::uno::RuntimeException) +{ + // nop +} + +//----------------------------------------------- +void SAL_CALL XCUBasedAcceleratorConfiguration::removeEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >& /*xListener*/ ) + throw(css::uno::RuntimeException) +{ + // nop +} + +//----------------------------------------------- void XCUBasedAcceleratorConfiguration::impl_ts_load( sal_Bool bPreferred, const css::uno::Reference< css::container::XNameAccess >& xCfg ) { AcceleratorCache aReadCache = AcceleratorCache(); diff --git a/framework/source/accelerators/globalacceleratorconfiguration.cxx b/framework/source/accelerators/globalacceleratorconfiguration.cxx index 92320ea82280..f69825f21a68 100644 --- a/framework/source/accelerators/globalacceleratorconfiguration.cxx +++ b/framework/source/accelerators/globalacceleratorconfiguration.cxx @@ -111,6 +111,25 @@ void GlobalAcceleratorConfiguration::impl_ts_fillCache() {} } +//----------------------------------------------- +// +// XComponent.dispose(), #i120029#, to release the cyclic reference +// +void SAL_CALL GlobalAcceleratorConfiguration::dispose() + throw(css::uno::RuntimeException) +{ + try + { + css::uno::Reference< css::util::XChangesNotifier > xBroadcaster(m_xCfg, css::uno::UNO_QUERY_THROW); + if ( xBroadcaster.is() ) + xBroadcaster->removeChangesListener(static_cast< css::util::XChangesListener* >(this)); + } + catch(const css::uno::RuntimeException&) + { throw; } + catch(const css::uno::Exception&) + {} +} + } // namespace framework /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/framework/source/accelerators/moduleacceleratorconfiguration.cxx b/framework/source/accelerators/moduleacceleratorconfiguration.cxx index 09c66b38fb07..382df163b2b5 100644 --- a/framework/source/accelerators/moduleacceleratorconfiguration.cxx +++ b/framework/source/accelerators/moduleacceleratorconfiguration.cxx @@ -143,6 +143,25 @@ void ModuleAcceleratorConfiguration::impl_ts_fillCache() {} } +//----------------------------------------------- +// +// XComponent.dispose(), #i120029#, to release the cyclic reference +// +void SAL_CALL ModuleAcceleratorConfiguration::dispose() + throw(css::uno::RuntimeException) +{ + try + { + css::uno::Reference< css::util::XChangesNotifier > xBroadcaster(m_xCfg, css::uno::UNO_QUERY_THROW); + if ( xBroadcaster.is() ) + xBroadcaster->removeChangesListener(static_cast< css::util::XChangesListener* >(this)); + } + catch(const css::uno::RuntimeException&) + { throw; } + catch(const css::uno::Exception&) + {} +} + } // namespace framework /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |