You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openoffice.apache.org by af...@apache.org on 2012/06/20 14:58:33 UTC

svn commit: r1352075 - in /incubator/ooo/trunk/main/framework/source: accelerators/ inc/accelerators/ uiconfiguration/ uielement/

Author: af
Date: Wed Jun 20 12:58:32 2012
New Revision: 1352075

URL: http://svn.apache.org/viewvc?rev=1352075&view=rev
Log:
#i120029# Unregister on dispose.

          Patch by: zhang jianfang
          Review by: Andre Fischer

Modified:
    incubator/ooo/trunk/main/framework/source/accelerators/acceleratorconfiguration.cxx
    incubator/ooo/trunk/main/framework/source/accelerators/globalacceleratorconfiguration.cxx
    incubator/ooo/trunk/main/framework/source/accelerators/moduleacceleratorconfiguration.cxx
    incubator/ooo/trunk/main/framework/source/inc/accelerators/acceleratorconfiguration.hxx
    incubator/ooo/trunk/main/framework/source/inc/accelerators/globalacceleratorconfiguration.hxx
    incubator/ooo/trunk/main/framework/source/inc/accelerators/moduleacceleratorconfiguration.hxx
    incubator/ooo/trunk/main/framework/source/uiconfiguration/moduleuiconfigurationmanager.cxx
    incubator/ooo/trunk/main/framework/source/uielement/menubarmanager.cxx
    incubator/ooo/trunk/main/framework/source/uielement/toolbarmanager.cxx

Modified: incubator/ooo/trunk/main/framework/source/accelerators/acceleratorconfiguration.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/framework/source/accelerators/acceleratorconfiguration.cxx?rev=1352075&r1=1352074&r2=1352075&view=diff
==============================================================================
--- incubator/ooo/trunk/main/framework/source/accelerators/acceleratorconfiguration.cxx (original)
+++ incubator/ooo/trunk/main/framework/source/accelerators/acceleratorconfiguration.cxx Wed Jun 20 12:58:32 2012
@@ -676,21 +676,23 @@ AcceleratorCache& XMLBasedAcceleratorCon
 
 //-----------------------------------------------    
 //	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           )
@@ -1292,6 +1294,27 @@ void SAL_CALL XCUBasedAcceleratorConfigu
 }
 
 //----------------------------------------------- 
+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 >& aListener )
+	throw(css::uno::RuntimeException)
+{
+    // nop
+}
+
+//----------------------------------------------- 
 void XCUBasedAcceleratorConfiguration::impl_ts_load( sal_Bool bPreferred, const css::uno::Reference< css::container::XNameAccess >& xCfg )
 {
     AcceleratorCache aReadCache = AcceleratorCache();

Modified: incubator/ooo/trunk/main/framework/source/accelerators/globalacceleratorconfiguration.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/framework/source/accelerators/globalacceleratorconfiguration.cxx?rev=1352075&r1=1352074&r2=1352075&view=diff
==============================================================================
--- incubator/ooo/trunk/main/framework/source/accelerators/globalacceleratorconfiguration.cxx (original)
+++ incubator/ooo/trunk/main/framework/source/accelerators/globalacceleratorconfiguration.cxx Wed Jun 20 12:58:32 2012
@@ -120,4 +120,23 @@ void GlobalAcceleratorConfiguration::imp
         {}
 }
 
+//----------------------------------------------- 
+//
+// XComponent.dispose(),  #120029#, 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& exRun)
+    { throw exRun; }
+    catch(const css::uno::Exception&)
+    {}
+}
+
 } // namespace framework

Modified: incubator/ooo/trunk/main/framework/source/accelerators/moduleacceleratorconfiguration.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/framework/source/accelerators/moduleacceleratorconfiguration.cxx?rev=1352075&r1=1352074&r2=1352075&view=diff
==============================================================================
--- incubator/ooo/trunk/main/framework/source/accelerators/moduleacceleratorconfiguration.cxx (original)
+++ incubator/ooo/trunk/main/framework/source/accelerators/moduleacceleratorconfiguration.cxx Wed Jun 20 12:58:32 2012
@@ -167,5 +167,24 @@ void ModuleAcceleratorConfiguration::imp
         {}
 }
 
+//----------------------------------------------- 
+//
+// XComponent.dispose(),  #120029#, 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& exRun)
+    { throw exRun; }
+    catch(const css::uno::Exception&)
+    {}
+}
+
 } // namespace framework
 

Modified: incubator/ooo/trunk/main/framework/source/inc/accelerators/acceleratorconfiguration.hxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/framework/source/inc/accelerators/acceleratorconfiguration.hxx?rev=1352075&r1=1352074&r2=1352075&view=diff
==============================================================================
--- incubator/ooo/trunk/main/framework/source/inc/accelerators/acceleratorconfiguration.hxx (original)
+++ incubator/ooo/trunk/main/framework/source/inc/accelerators/acceleratorconfiguration.hxx Wed Jun 20 12:58:32 2012
@@ -309,6 +309,7 @@ class XCUBasedAcceleratorConfiguration :
 									   , public    ::cppu::OWeakObject
 								       , public    css::lang::XTypeProvider
 									   , public    css::util::XChangesListener  
+									   , public    css::lang::XComponent  
 									   , public    css::form::XReset                    // TODO use XPresetHandler instead if available
 									   , public    css::ui::XAcceleratorConfiguration  // => css::ui::XUIConfigurationPersistence						
 																					   //    css::ui::XUIConfigurationStorage
@@ -435,6 +436,11 @@ class XCUBasedAcceleratorConfiguration :
 		virtual void SAL_CALL disposing(const css::lang::EventObject& aEvent)
 			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
 

Modified: incubator/ooo/trunk/main/framework/source/inc/accelerators/globalacceleratorconfiguration.hxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/framework/source/inc/accelerators/globalacceleratorconfiguration.hxx?rev=1352075&r1=1352074&r2=1352075&view=diff
==============================================================================
--- incubator/ooo/trunk/main/framework/source/inc/accelerators/globalacceleratorconfiguration.hxx (original)
+++ incubator/ooo/trunk/main/framework/source/inc/accelerators/globalacceleratorconfiguration.hxx Wed Jun 20 12:58:32 2012
@@ -88,6 +88,9 @@ class GlobalAcceleratorConfiguration : p
 			throw (css::uno::Exception       ,
 			css::uno::RuntimeException);
 
+        // XComponent
+        virtual  void SAL_CALL dispose() throw (::com::sun::star::uno::RuntimeException);
+
     //______________________________________
     // helper
     

Modified: incubator/ooo/trunk/main/framework/source/inc/accelerators/moduleacceleratorconfiguration.hxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/framework/source/inc/accelerators/moduleacceleratorconfiguration.hxx?rev=1352075&r1=1352074&r2=1352075&view=diff
==============================================================================
--- incubator/ooo/trunk/main/framework/source/inc/accelerators/moduleacceleratorconfiguration.hxx (original)
+++ incubator/ooo/trunk/main/framework/source/inc/accelerators/moduleacceleratorconfiguration.hxx Wed Jun 20 12:58:32 2012
@@ -96,6 +96,9 @@ class ModuleAcceleratorConfiguration : p
             throw(css::uno::Exception       ,
                   css::uno::RuntimeException);
                   
+        // XComponent
+        virtual  void SAL_CALL dispose() throw (::com::sun::star::uno::RuntimeException);
+
     //______________________________________
     // helper
     

Modified: incubator/ooo/trunk/main/framework/source/uiconfiguration/moduleuiconfigurationmanager.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/framework/source/uiconfiguration/moduleuiconfigurationmanager.cxx?rev=1352075&r1=1352074&r2=1352075&view=diff
==============================================================================
--- incubator/ooo/trunk/main/framework/source/uiconfiguration/moduleuiconfigurationmanager.cxx (original)
+++ incubator/ooo/trunk/main/framework/source/uiconfiguration/moduleuiconfigurationmanager.cxx Wed Jun 20 12:58:32 2012
@@ -777,6 +777,9 @@ void SAL_CALL ModuleUIConfigurationManag
     ResetableGuard aGuard( m_aLock );
     Reference< XComponent > xModuleImageManager( m_xModuleImageManager );
     m_xModuleImageManager.clear();
+    Reference< XComponent > xCompMAM( m_xModuleAcceleratorManager, UNO_QUERY );
+    if ( xCompMAM.is() )
+    	xCompMAM->dispose();
     m_xModuleAcceleratorManager.clear();
     m_aUIElements[LAYER_USERDEFINED].clear();
     m_aUIElements[LAYER_DEFAULT].clear();

Modified: incubator/ooo/trunk/main/framework/source/uielement/menubarmanager.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/framework/source/uielement/menubarmanager.cxx?rev=1352075&r1=1352074&r2=1352075&view=diff
==============================================================================
--- incubator/ooo/trunk/main/framework/source/uielement/menubarmanager.cxx (original)
+++ incubator/ooo/trunk/main/framework/source/uielement/menubarmanager.cxx Wed Jun 20 12:58:32 2012
@@ -422,6 +422,9 @@ void SAL_CALL MenuBarManager::dispose() 
         }
         m_xDocImageManager.clear();
         m_xModuleImageManager.clear();
+        Reference< XComponent > xCompGAM( m_xGlobalAcceleratorManager, UNO_QUERY );
+        if ( xCompGAM.is() )
+            xCompGAM->dispose();
         m_xGlobalAcceleratorManager.clear();
         m_xModuleAcceleratorManager.clear();
         m_xDocAcceleratorManager.clear();

Modified: incubator/ooo/trunk/main/framework/source/uielement/toolbarmanager.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/framework/source/uielement/toolbarmanager.cxx?rev=1352075&r1=1352074&r2=1352075&view=diff
==============================================================================
--- incubator/ooo/trunk/main/framework/source/uielement/toolbarmanager.cxx (original)
+++ incubator/ooo/trunk/main/framework/source/uielement/toolbarmanager.cxx Wed Jun 20 12:58:32 2012
@@ -706,6 +706,9 @@ void SAL_CALL ToolBarManager::dispose() 
 
         m_xFrame.clear();
         m_xServiceManager.clear();
+        Reference< XComponent > xCompGAM( m_xGlobalAcceleratorManager, UNO_QUERY );
+        if ( xCompGAM.is() )
+            xCompGAM->dispose();
         m_xGlobalAcceleratorManager.clear();
         m_xModuleAcceleratorManager.clear();
         m_xDocAcceleratorManager.clear();