diff options
Diffstat (limited to 'chart2/source/model')
-rwxr-xr-x | chart2/source/model/main/ChartModel.cxx | 3 | ||||
-rwxr-xr-x | chart2/source/model/main/UndoManager.cxx | 27 | ||||
-rwxr-xr-x | chart2/source/model/main/UndoManager.hxx | 10 |
3 files changed, 32 insertions, 8 deletions
diff --git a/chart2/source/model/main/ChartModel.cxx b/chart2/source/model/main/ChartModel.cxx index 481f968f9488..95da8c778ead 100755 --- a/chart2/source/model/main/ChartModel.cxx +++ b/chart2/source/model/main/ChartModel.cxx @@ -538,6 +538,9 @@ void SAL_CALL ChartModel::dispose() throw(uno::RuntimeException) //--release all resources and references //// @todo + if ( m_xDiagram.is() ) + ModifyListenerHelper::removeListener( m_xDiagram, this ); + m_xDataProvider.clear(); m_xInternalDataProvider.clear(); m_xNumberFormatsSupplier.clear(); diff --git a/chart2/source/model/main/UndoManager.cxx b/chart2/source/model/main/UndoManager.cxx index 7260ac15987f..98b63012c737 100755 --- a/chart2/source/model/main/UndoManager.cxx +++ b/chart2/source/model/main/UndoManager.cxx @@ -63,6 +63,7 @@ namespace chart using ::com::sun::star::document::XUndoManagerListener; using ::com::sun::star::util::NotLockedException; using ::com::sun::star::lang::NoSupportException; + using ::com::sun::star::util::XModifyListener; /** === end UNO using === **/ namespace impl @@ -108,13 +109,13 @@ namespace chart void checkDisposed_lck(); private: - UndoManager& m_rAntiImpl; - ::cppu::OWeakObject& m_rParent; - ::osl::Mutex& m_rMutex; - bool m_bDisposed; + UndoManager& m_rAntiImpl; + ::cppu::OWeakObject& m_rParent; + ::osl::Mutex& m_rMutex; + bool m_bDisposed; - SfxUndoManager m_aUndoManager; - ::framework::UndoManagerHelper m_aUndoHelper; + SfxUndoManager m_aUndoManager; + ::framework::UndoManagerHelper m_aUndoHelper; }; //-------------------------------------------------------------------------------------------------------------- @@ -397,6 +398,20 @@ namespace chart throw NoSupportException( ::rtl::OUString(), m_pImpl->getThis() ); } + //------------------------------------------------------------------------------------------------------------------ + void SAL_CALL UndoManager::addModifyListener( const Reference< XModifyListener >& i_listener ) throw (RuntimeException) + { + UndoManagerMethodGuard aGuard( *m_pImpl ); + m_pImpl->getUndoHelper().addModifyListener( i_listener ); + } + + //------------------------------------------------------------------------------------------------------------------ + void SAL_CALL UndoManager::removeModifyListener( const Reference< XModifyListener >& i_listener ) throw (RuntimeException) + { + UndoManagerMethodGuard aGuard( *m_pImpl ); + m_pImpl->getUndoHelper().removeModifyListener( i_listener ); + } + //...................................................................................................................... } // namespace chart //...................................................................................................................... diff --git a/chart2/source/model/main/UndoManager.hxx b/chart2/source/model/main/UndoManager.hxx index 9071a9010b47..07091207ebd0 100755 --- a/chart2/source/model/main/UndoManager.hxx +++ b/chart2/source/model/main/UndoManager.hxx @@ -29,10 +29,11 @@ /** === begin UNO includes === **/ #include <com/sun/star/document/XUndoManager.hpp> +#include <com/sun/star/util/XModifyBroadcaster.hpp> #include <com/sun/star/container/XChild.hpp> /** === end UNO includes === **/ -#include <cppuhelper/implbase1.hxx> +#include <cppuhelper/implbase2.hxx> #include <boost/scoped_ptr.hpp> @@ -44,7 +45,8 @@ namespace chart namespace impl { class UndoManager_Impl; - typedef ::cppu::ImplHelper1 < ::com::sun::star::document::XUndoManager + typedef ::cppu::ImplHelper2 < ::com::sun::star::document::XUndoManager + , ::com::sun::star::util::XModifyBroadcaster > UndoManager_Base; } @@ -92,6 +94,10 @@ namespace chart virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL getParent( ) throw (::com::sun::star::uno::RuntimeException); virtual void SAL_CALL setParent( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& Parent ) throw (::com::sun::star::lang::NoSupportException, ::com::sun::star::uno::RuntimeException); + // XModifyBroadcaster + virtual void SAL_CALL addModifyListener( const ::com::sun::star::uno::Reference< ::com::sun::star::util::XModifyListener >& aListener ) throw (::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL removeModifyListener( const ::com::sun::star::uno::Reference< ::com::sun::star::util::XModifyListener >& aListener ) throw (::com::sun::star::uno::RuntimeException); + private: ::boost::scoped_ptr< impl::UndoManager_Impl > m_pImpl; }; |