diff options
author | Frank Schönheit <fs@openoffice.org> | 2002-10-23 11:44:14 +0000 |
---|---|---|
committer | Frank Schönheit <fs@openoffice.org> | 2002-10-23 11:44:14 +0000 |
commit | f6bb843bf1de6ec35267bcbf33b4a39b964e0ce1 (patch) | |
tree | 075e33347fca2b709ea7772b5246801b6fe4f3ef /svx/source/fmcomp | |
parent | 289d227c0fcfa926ac778144793920d313583308 (diff) |
#100312# dispose: release the interceptor chain
Diffstat (limited to 'svx/source/fmcomp')
-rw-r--r-- | svx/source/fmcomp/fmgridif.cxx | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/svx/source/fmcomp/fmgridif.cxx b/svx/source/fmcomp/fmgridif.cxx index e5ee03af62a0..84956c6edf55 100644 --- a/svx/source/fmcomp/fmgridif.cxx +++ b/svx/source/fmcomp/fmgridif.cxx @@ -2,9 +2,9 @@ * * $RCSfile: fmgridif.cxx,v $ * - * $Revision: 1.30 $ + * $Revision: 1.31 $ * - * last change: $Author: fs $ $Date: 2002-10-08 15:05:01 $ + * last change: $Author: fs $ $Date: 2002-10-23 12:44:14 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -216,8 +216,12 @@ using namespace ::com::sun::star::util; #define XResetListener ::com::sun::star::form::XResetListener #define XLoadable ::com::sun::star::form::XLoadable #define XColumnsSupplier ::com::sun::star::sdbcx::XColumnsSupplier + #define XDispatchProviderInterceptor ::com::sun::star::frame::XDispatchProviderInterceptor + #define XDispatchProvider ::com::sun::star::frame::XDispatchProvider #else using ::com::sun::star::sdbcx::XColumnsSupplier; + using ::com::sun::star::frame::XDispatchProviderInterceptor; + using ::com::sun::star::frame::XDispatchProvider; #endif @@ -2153,6 +2157,24 @@ void FmXGridPeer::dispose() throw( RuntimeException ) m_aContainerListeners.disposeAndClear(aEvt); VCLXWindow::dispose(); + // release all interceptors + // discovered during #100312# - 2002-10-23 - fs@openoffice.org + Reference< XDispatchProviderInterceptor > xInterceptor( m_xFirstDispatchInterceptor ); + m_xFirstDispatchInterceptor.clear(); + while ( xInterceptor.is() ) + { + // tell the interceptor it has a new (means no) predecessor + xInterceptor->setMasterDispatchProvider( NULL ); + + // ask for it's successor + Reference< XDispatchProvider > xSlave = xInterceptor->getSlaveDispatchProvider(); + // and give it the new (means no) successoert + xInterceptor->setSlaveDispatchProvider( NULL ); + + // start over with the next chain element + xInterceptor = xInterceptor.query( xSlave ); + } + DisConnectFromDispatcher(); setRowSet(Reference< XRowSet > ()); } |