Kaydet (Commit) 11f8e53d authored tarafından Andre Fischer's avatar Andre Fischer Kaydeden (comit) Caolán McNamara

Resolves: #i120029# Unregister on dispose.

Patch by: zhang jianfang
Review by: Andre Fischer
(cherry picked from commit e0d5abb6)

Conflicts:
	framework/source/uielement/toolbarmanager.cxx

Change-Id: I4c6a112b27396fc7e5d42f3feef11ac1fe81efcd
üst 4bdbf360
...@@ -634,21 +634,23 @@ OUString XMLBasedAcceleratorConfiguration::impl_ts_getLocale() const ...@@ -634,21 +634,23 @@ OUString XMLBasedAcceleratorConfiguration::impl_ts_getLocale() const
//----------------------------------------------- //-----------------------------------------------
// XInterface, XTypeProvider // XInterface, XTypeProvider
DEFINE_XINTERFACE_7(XCUBasedAcceleratorConfiguration , DEFINE_XINTERFACE_8(XCUBasedAcceleratorConfiguration ,
OWeakObject , OWeakObject ,
DIRECT_INTERFACE(css::lang::XTypeProvider ), DIRECT_INTERFACE(css::lang::XTypeProvider ),
DIRECT_INTERFACE(css::ui::XAcceleratorConfiguration ), DIRECT_INTERFACE(css::ui::XAcceleratorConfiguration ),
DIRECT_INTERFACE(css::util::XChangesListener ), DIRECT_INTERFACE(css::util::XChangesListener ),
DIRECT_INTERFACE(css::form::XReset ), DIRECT_INTERFACE(css::form::XReset ),
DIRECT_INTERFACE(css::lang::XComponent ),
DIRECT_INTERFACE(css::ui::XUIConfigurationPersistence), DIRECT_INTERFACE(css::ui::XUIConfigurationPersistence),
DIRECT_INTERFACE(css::ui::XUIConfigurationStorage ), DIRECT_INTERFACE(css::ui::XUIConfigurationStorage ),
DIRECT_INTERFACE(css::ui::XUIConfiguration )) DIRECT_INTERFACE(css::ui::XUIConfiguration ))
DEFINE_XTYPEPROVIDER_7(XCUBasedAcceleratorConfiguration , DEFINE_XTYPEPROVIDER_8(XCUBasedAcceleratorConfiguration ,
css::lang::XTypeProvider , css::lang::XTypeProvider ,
css::ui::XAcceleratorConfiguration , css::ui::XAcceleratorConfiguration ,
css::util::XChangesListener , css::util::XChangesListener ,
css::form::XReset , css::form::XReset ,
css::lang::XComponent ,
css::ui::XUIConfigurationPersistence, css::ui::XUIConfigurationPersistence,
css::ui::XUIConfigurationStorage , css::ui::XUIConfigurationStorage ,
css::ui::XUIConfiguration ) css::ui::XUIConfiguration )
...@@ -1249,6 +1251,27 @@ void SAL_CALL XCUBasedAcceleratorConfiguration::disposing(const css::lang::Event ...@@ -1249,6 +1251,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 ) void XCUBasedAcceleratorConfiguration::impl_ts_load( sal_Bool bPreferred, const css::uno::Reference< css::container::XNameAccess >& xCfg )
{ {
......
...@@ -111,6 +111,25 @@ void GlobalAcceleratorConfiguration::impl_ts_fillCache() ...@@ -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 } // namespace framework
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
...@@ -143,6 +143,25 @@ void ModuleAcceleratorConfiguration::impl_ts_fillCache() ...@@ -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 } // namespace framework
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
...@@ -290,6 +290,7 @@ class XCUBasedAcceleratorConfiguration : protected ThreadHelpBase ...@@ -290,6 +290,7 @@ class XCUBasedAcceleratorConfiguration : protected ThreadHelpBase
, public ::cppu::OWeakObject , public ::cppu::OWeakObject
, public css::lang::XTypeProvider , public css::lang::XTypeProvider
, public css::util::XChangesListener , public css::util::XChangesListener
, public css::lang::XComponent
, public css::form::XReset // TODO use XPresetHandler instead if available , public css::form::XReset // TODO use XPresetHandler instead if available
, public css::ui::XAcceleratorConfiguration // => css::ui::XUIConfigurationPersistence , public css::ui::XAcceleratorConfiguration // => css::ui::XUIConfigurationPersistence
// css::ui::XUIConfigurationStorage // css::ui::XUIConfigurationStorage
...@@ -416,6 +417,11 @@ class XCUBasedAcceleratorConfiguration : protected ThreadHelpBase ...@@ -416,6 +417,11 @@ class XCUBasedAcceleratorConfiguration : protected ThreadHelpBase
virtual void SAL_CALL disposing(const css::lang::EventObject& aEvent) virtual void SAL_CALL disposing(const css::lang::EventObject& aEvent)
throw(css::uno::RuntimeException); throw(css::uno::RuntimeException);
// XComponent
virtual void SAL_CALL dispose() throw (::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL addEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >& xListener ) throw (::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL removeEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >& aListener ) throw (::com::sun::star::uno::RuntimeException);
//______________________________________ //______________________________________
// helper for derived classes // helper for derived classes
......
...@@ -70,6 +70,9 @@ class GlobalAcceleratorConfiguration : public XCUBasedAcceleratorConfiguration ...@@ -70,6 +70,9 @@ class GlobalAcceleratorConfiguration : public XCUBasedAcceleratorConfiguration
throw (css::uno::Exception , throw (css::uno::Exception ,
css::uno::RuntimeException); css::uno::RuntimeException);
// XComponent
virtual void SAL_CALL dispose() throw (::com::sun::star::uno::RuntimeException);
//______________________________________ //______________________________________
// helper // helper
......
...@@ -81,6 +81,9 @@ class ModuleAcceleratorConfiguration : public XCUBasedAcceleratorConfiguration ...@@ -81,6 +81,9 @@ class ModuleAcceleratorConfiguration : public XCUBasedAcceleratorConfiguration
throw(css::uno::Exception , throw(css::uno::Exception ,
css::uno::RuntimeException); css::uno::RuntimeException);
// XComponent
virtual void SAL_CALL dispose() throw (::com::sun::star::uno::RuntimeException);
//______________________________________ //______________________________________
// helper // helper
......
...@@ -761,6 +761,9 @@ void SAL_CALL ModuleUIConfigurationManager::dispose() throw (::com::sun::star::u ...@@ -761,6 +761,9 @@ void SAL_CALL ModuleUIConfigurationManager::dispose() throw (::com::sun::star::u
ResetableGuard aGuard( m_aLock ); ResetableGuard aGuard( m_aLock );
Reference< XComponent > xModuleImageManager( m_xModuleImageManager ); Reference< XComponent > xModuleImageManager( m_xModuleImageManager );
m_xModuleImageManager.clear(); m_xModuleImageManager.clear();
Reference< XComponent > xCompMAM( m_xModuleAcceleratorManager, UNO_QUERY );
if ( xCompMAM.is() )
xCompMAM->dispose();
m_xModuleAcceleratorManager.clear(); m_xModuleAcceleratorManager.clear();
m_aUIElements[LAYER_USERDEFINED].clear(); m_aUIElements[LAYER_USERDEFINED].clear();
m_aUIElements[LAYER_DEFAULT].clear(); m_aUIElements[LAYER_DEFAULT].clear();
......
...@@ -379,6 +379,9 @@ void SAL_CALL MenuBarManager::dispose() throw( RuntimeException ) ...@@ -379,6 +379,9 @@ void SAL_CALL MenuBarManager::dispose() throw( RuntimeException )
} }
m_xDocImageManager.clear(); m_xDocImageManager.clear();
m_xModuleImageManager.clear(); m_xModuleImageManager.clear();
Reference< XComponent > xCompGAM( m_xGlobalAcceleratorManager, UNO_QUERY );
if ( xCompGAM.is() )
xCompGAM->dispose();
m_xGlobalAcceleratorManager.clear(); m_xGlobalAcceleratorManager.clear();
m_xModuleAcceleratorManager.clear(); m_xModuleAcceleratorManager.clear();
m_xDocAcceleratorManager.clear(); m_xDocAcceleratorManager.clear();
......
...@@ -653,6 +653,9 @@ void SAL_CALL ToolBarManager::dispose() throw( RuntimeException ) ...@@ -653,6 +653,9 @@ void SAL_CALL ToolBarManager::dispose() throw( RuntimeException )
m_xFrame.clear(); m_xFrame.clear();
m_xContext.clear(); m_xContext.clear();
Reference< XComponent > xCompGAM( m_xGlobalAcceleratorManager, UNO_QUERY );
if ( xCompGAM.is() )
xCompGAM->dispose();
m_xGlobalAcceleratorManager.clear(); m_xGlobalAcceleratorManager.clear();
m_xModuleAcceleratorManager.clear(); m_xModuleAcceleratorManager.clear();
m_xDocAcceleratorManager.clear(); m_xDocAcceleratorManager.clear();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment