summaryrefslogtreecommitdiff
path: root/sfx2
diff options
context:
space:
mode:
authorOliver Bolte <obo@openoffice.org>2008-10-16 06:57:26 +0000
committerOliver Bolte <obo@openoffice.org>2008-10-16 06:57:26 +0000
commitdb4c719a825e0c5b8d13133a1c8a33d4f3b53753 (patch)
tree7c16f150485662d25afe7b89d15884ec5e6bc3dd /sfx2
parent0a6f995f4e6739636123a9829b5e22ea04b52f72 (diff)
CWS-TOOLING: integrate CWS odbmacros3
Diffstat (limited to 'sfx2')
-rw-r--r--sfx2/inc/sfx2/docstoragemodifylistener.hxx10
-rw-r--r--sfx2/inc/sfx2/evntconf.hxx4
-rw-r--r--sfx2/inc/sfx2/sfxbasemodel.hxx2
-rw-r--r--sfx2/source/doc/docstoragemodifylistener.cxx10
-rw-r--r--sfx2/source/doc/sfxbasemodel.cxx4
-rw-r--r--sfx2/source/inc/eventsupplier.hxx27
-rw-r--r--sfx2/source/notify/eventsupplier.cxx150
7 files changed, 139 insertions, 68 deletions
diff --git a/sfx2/inc/sfx2/docstoragemodifylistener.hxx b/sfx2/inc/sfx2/docstoragemodifylistener.hxx
index 19521d9e09..2dcf9c1c6b 100644
--- a/sfx2/inc/sfx2/docstoragemodifylistener.hxx
+++ b/sfx2/inc/sfx2/docstoragemodifylistener.hxx
@@ -7,7 +7,7 @@
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: docstoragemodifylistener.hxx,v $
- * $Revision: 1.4 $
+ * $Revision: 1.4.28.1 $
*
* This file is part of OpenOffice.org.
*
@@ -39,6 +39,11 @@
#include <cppuhelper/implbase1.hxx>
+namespace vos
+{
+ class IMutex;
+}
+
//........................................................................
namespace sfx2
{
@@ -64,9 +69,10 @@ namespace sfx2
class SFX2_DLLPUBLIC DocumentStorageModifyListener : public DocumentStorageModifyListener_Base
{
IModifiableDocument* m_pDocument;
+ ::vos::IMutex& m_rMutex;
public:
- DocumentStorageModifyListener( IModifiableDocument& _rDocument );
+ DocumentStorageModifyListener( IModifiableDocument& _rDocument, ::vos::IMutex& _rMutex );
void dispose();
diff --git a/sfx2/inc/sfx2/evntconf.hxx b/sfx2/inc/sfx2/evntconf.hxx
index 4f83c7081f..045c8dd2ba 100644
--- a/sfx2/inc/sfx2/evntconf.hxx
+++ b/sfx2/inc/sfx2/evntconf.hxx
@@ -7,7 +7,7 @@
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: evntconf.hxx,v $
- * $Revision: 1.3 $
+ * $Revision: 1.3.28.1 $
*
* This file is part of OpenOffice.org.
*
@@ -85,10 +85,8 @@ SV_DECL_PTRARR(SfxEventArr_Impl, SfxEvent_Impl*, 5, 5)
#define PROP_EVENT_TYPE "EventType"
#define PROP_LIBRARY "Library"
#define PROP_SCRIPT "Script"
-#define PROP_SCRIPT_URL "URL"
#define PROP_MACRO_NAME "MacroName"
#define STAR_BASIC "StarBasic"
-#define JAVA_SCRIPT "JavaScript"
// -----------------------------------------------------------------------
//#else
diff --git a/sfx2/inc/sfx2/sfxbasemodel.hxx b/sfx2/inc/sfx2/sfxbasemodel.hxx
index 7cc75c8eca..76fbe3abc2 100644
--- a/sfx2/inc/sfx2/sfxbasemodel.hxx
+++ b/sfx2/inc/sfx2/sfxbasemodel.hxx
@@ -8,7 +8,7 @@
*
* $RCSfile: sfxbasemodel.hxx,v $
*
- * $Revision: 1.14 $
+ * $Revision: 1.13.28.1 $
*
* This file is part of OpenOffice.org.
*
diff --git a/sfx2/source/doc/docstoragemodifylistener.cxx b/sfx2/source/doc/docstoragemodifylistener.cxx
index 33489622e2..5d3ebf483d 100644
--- a/sfx2/source/doc/docstoragemodifylistener.cxx
+++ b/sfx2/source/doc/docstoragemodifylistener.cxx
@@ -7,7 +7,7 @@
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: docstoragemodifylistener.cxx,v $
- * $Revision: 1.4 $
+ * $Revision: 1.4.28.1 $
*
* This file is part of OpenOffice.org.
*
@@ -32,7 +32,6 @@
#include "precompiled_sfx2.hxx"
#include "sfx2/docstoragemodifylistener.hxx"
-#include <sfx2/app.hxx>
#include <vos/mutex.hxx>
/** === begin UNO includes === **/
@@ -60,8 +59,9 @@ namespace sfx2
//=
//====================================================================
//--------------------------------------------------------------------
- DocumentStorageModifyListener::DocumentStorageModifyListener( IModifiableDocument& _rDocument )
+ DocumentStorageModifyListener::DocumentStorageModifyListener( IModifiableDocument& _rDocument, ::vos::IMutex& _rMutex )
:m_pDocument( &_rDocument )
+ ,m_rMutex( _rMutex )
{
}
@@ -73,14 +73,14 @@ namespace sfx2
//--------------------------------------------------------------------
void DocumentStorageModifyListener::dispose()
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
+ ::vos::OGuard aGuard( m_rMutex );
m_pDocument = NULL;
}
//--------------------------------------------------------------------
void SAL_CALL DocumentStorageModifyListener::modified( const EventObject& /*aEvent*/ ) throw (RuntimeException)
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
+ ::vos::OGuard aGuard( m_rMutex );
// storageIsModified must not contain any locking!
if ( m_pDocument )
m_pDocument->storageIsModified();
diff --git a/sfx2/source/doc/sfxbasemodel.cxx b/sfx2/source/doc/sfxbasemodel.cxx
index 1cba3fe0ba..eab78c1198 100644
--- a/sfx2/source/doc/sfxbasemodel.cxx
+++ b/sfx2/source/doc/sfxbasemodel.cxx
@@ -7,7 +7,7 @@
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: sfxbasemodel.cxx,v $
- * $Revision: 1.145 $
+ * $Revision: 1.139.2.5 $
*
* This file is part of OpenOffice.org.
*
@@ -2899,7 +2899,7 @@ void SfxBaseModel::ListenForStorage_Impl( const uno::Reference< embed::XStorage
{
if ( !m_pData->m_pStorageModifyListen.is() )
{
- m_pData->m_pStorageModifyListen = new ::sfx2::DocumentStorageModifyListener( *m_pData );
+ m_pData->m_pStorageModifyListen = new ::sfx2::DocumentStorageModifyListener( *m_pData, Application::GetSolarMutex() );
}
// no need to deregister the listening for old storage since it should be disposed automatically
diff --git a/sfx2/source/inc/eventsupplier.hxx b/sfx2/source/inc/eventsupplier.hxx
index a9603eb6ea..4520fd6c3d 100644
--- a/sfx2/source/inc/eventsupplier.hxx
+++ b/sfx2/source/inc/eventsupplier.hxx
@@ -7,7 +7,7 @@
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: eventsupplier.hxx,v $
- * $Revision: 1.14 $
+ * $Revision: 1.14.28.1 $
*
* This file is part of OpenOffice.org.
*
@@ -36,6 +36,8 @@
#include <com/sun/star/container/XSet.hpp>
#include <com/sun/star/document/XEventListener.hpp>
#include <com/sun/star/document/XEventBroadcaster.hpp>
+#include <com/sun/star/document/XDocumentEventBroadcaster.hpp>
+#include <com/sun/star/document/XDocumentEventListener.hpp>
#include <com/sun/star/document/XEventsSupplier.hpp>
#include <com/sun/star/lang/XServiceInfo.hpp>
#include <com/sun/star/task/XJobExecutor.hpp>
@@ -48,7 +50,7 @@
#include <cppuhelper/implbase2.hxx>
#include <cppuhelper/implbase3.hxx>
#include <cppuhelper/implbase4.hxx>
-#include <cppuhelper/implbase5.hxx>
+#include <cppuhelper/implbase7.hxx>
#include <comphelper/sequenceashashmap.hxx>
#include <comphelper/sequenceasvector.hxx>
#include <sfx2/sfxuno.hxx>
@@ -178,17 +180,20 @@ class ModelCollectionEnumeration : public ModelCollectionMutexBase
//=============================================================================
class SfxGlobalEvents_Impl : public ModelCollectionMutexBase
- , public ::cppu::WeakImplHelper5< ::com::sun::star::lang::XServiceInfo
+ , public ::cppu::WeakImplHelper7< ::com::sun::star::lang::XServiceInfo
, ::com::sun::star::document::XEventsSupplier
, ::com::sun::star::document::XEventBroadcaster
+ , ::com::sun::star::document::XDocumentEventBroadcaster
, ::com::sun::star::document::XEventListener
+ , ::com::sun::star::document::XDocumentEventListener
, ::com::sun::star::container::XSet >
, public SfxListener
{
::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > m_xSMGR;
::com::sun::star::uno::Reference< ::com::sun::star::container::XNameReplace > m_xEvents;
- ::com::sun::star::uno::WeakReference< ::com::sun::star::task::XJobExecutor > m_xJobsBinding;
- OINTERFACECONTAINERHELPER m_aInterfaceContainer;
+ ::com::sun::star::uno::WeakReference< ::com::sun::star::document::XEventListener > m_xJobExecutorListener;
+ OINTERFACECONTAINERHELPER m_aLegacyListeners;
+ OINTERFACECONTAINERHELPER m_aDocumentListeners;
TModelList m_lModels;
GlobalEventConfig* pImp;
@@ -209,10 +214,18 @@ public:
virtual void SAL_CALL removeEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::document::XEventListener >& xListener)
throw(::com::sun::star::uno::RuntimeException);
+
+ // css.document.XDocumentEventBroadcaster
+ virtual void SAL_CALL addDocumentEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::document::XDocumentEventListener >& _Listener ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeDocumentEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::document::XDocumentEventListener >& _Listener ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL notifyDocumentEvent( const ::rtl::OUString& _EventName, const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XController2 >& _ViewController, const ::com::sun::star::uno::Any& _Supplement ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::NoSupportException, ::com::sun::star::uno::RuntimeException);
// css.document.XEventListener
virtual void SAL_CALL notifyEvent(const ::com::sun::star::document::EventObject& aEvent)
throw(::com::sun::star::uno::RuntimeException);
+
+ // css.document.XDocumentEventListener
+ virtual void SAL_CALL documentEventOccured( const ::com::sun::star::document::DocumentEvent& Event ) throw (::com::sun::star::uno::RuntimeException);
// css.container.XSet
virtual sal_Bool SAL_CALL has(const ::com::sun::star::uno::Any& aElement)
@@ -247,8 +260,8 @@ private:
// threadsafe
void implts_notifyJobExecution(const ::com::sun::star::document::EventObject& aEvent);
- void implts_checkAndExecuteEventBindings(const ::com::sun::star::document::EventObject& aEvent);
- void implts_notifyListener(const ::com::sun::star::document::EventObject& aEvent);
+ void implts_checkAndExecuteEventBindings(const ::com::sun::star::document::DocumentEvent& aEvent);
+ void implts_notifyListener(const ::com::sun::star::document::DocumentEvent& aEvent);
// not threadsafe
TModelList::iterator impl_searchDoc(const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel >& xModel);
diff --git a/sfx2/source/notify/eventsupplier.cxx b/sfx2/source/notify/eventsupplier.cxx
index 6c92cb2ec8..c7f9eb086d 100644
--- a/sfx2/source/notify/eventsupplier.cxx
+++ b/sfx2/source/notify/eventsupplier.cxx
@@ -7,7 +7,7 @@
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: eventsupplier.cxx,v $
- * $Revision: 1.36 $
+ * $Revision: 1.36.12.5 $
*
* This file is part of OpenOffice.org.
*
@@ -83,6 +83,7 @@ void SAL_CALL SfxEvents_Impl::replaceByName( const OUSTRING & aName, const ANY &
{
::osl::MutexGuard aGuard( maMutex );
+ bool bReset = !rElement.hasValue();
// find the event in the list and replace the data
long nCount = maEventNames.getLength();
for ( long i=0; i<nCount; i++ )
@@ -90,34 +91,41 @@ void SAL_CALL SfxEvents_Impl::replaceByName( const OUSTRING & aName, const ANY &
if ( maEventNames[i] == aName )
{
// check for correct type of the element
- if ( ::getCppuType( (const SEQUENCE < PROPERTYVALUE > *)0 ) == rElement.getValueType() )
+ if ( bReset || ::getCppuType( (const SEQUENCE < PROPERTYVALUE > *)0 ) == rElement.getValueType() )
{
// create Configuration at first, creation might call this method also and that would overwrite everything
// we might have stored before!
USHORT nID = (USHORT) SfxEventConfiguration::GetEventId_Impl( aName );
if ( nID )
{
- ANY aValue;
- BlowUpMacro( rElement, aValue, mpObjShell );
-
// pConfig becomes the owner of the new SvxMacro
if ( mpObjShell && !mpObjShell->IsLoading() )
mpObjShell->SetModified( TRUE );
- SEQUENCE < PROPERTYVALUE > aProperties;
- if ( aValue >>= aProperties )
+ if ( bReset )
{
- ::rtl::OUString aType;
- if (( aProperties[0].Name.compareToAscii( PROP_EVENT_TYPE ) == 0 ) &&
- ( aProperties[0].Value >>= aType ) &&
- aType.getLength() == 0 )
+ maEventData[i] = ANY();
+ }
+ else
+ {
+ ANY aValue;
+ BlowUpMacro( rElement, aValue, mpObjShell );
+
+ SEQUENCE < PROPERTYVALUE > aProperties;
+ if ( aValue >>= aProperties )
{
- // An empty event type means no binding. Therefore reset data
- // to reflect that state.
- maEventData[i] = ANY();
+ ::rtl::OUString aType;
+ if (( aProperties[0].Name.compareToAscii( PROP_EVENT_TYPE ) == 0 ) &&
+ ( aProperties[0].Value >>= aType ) &&
+ aType.getLength() == 0 )
+ {
+ // An empty event type means no binding. Therefore reset data
+ // to reflect that state.
+ maEventData[i] = ANY();
+ }
+ else
+ maEventData[i] = aValue;
}
- else
- maEventData[i] = aValue;
}
}
}
@@ -197,7 +205,7 @@ sal_Bool SAL_CALL SfxEvents_Impl::hasElements() throw ( RUNTIMEEXCEPTION )
return sal_False;
}
-static void Execute( ANY& aEventData, SfxObjectShell* pDoc )
+static void Execute( ANY& aEventData, const css::document::DocumentEvent& aTrigger, SfxObjectShell* pDoc )
{
SEQUENCE < PROPERTYVALUE > aProperties;
if ( aEventData >>= aProperties )
@@ -284,7 +292,11 @@ static void Execute( ANY& aEventData, SfxObjectShell* pDoc )
//aArgs[0].Name = rtl::OUString::createFromAscii("Referer");
//aArs[0].Value <<= ::rtl::OUString( pDoc->GetMedium()->GetName() );
//xDisp->dispatch( aURL, aArgs );
- xDisp->dispatch( aURL, ::com::sun::star::uno::Sequence < ::com::sun::star::beans::PropertyValue >() );
+
+ css::beans::PropertyValue aEventParam;
+ aEventParam.Value <<= aTrigger;
+ css::uno::Sequence< css::beans::PropertyValue > aDispatchArgs( &aEventParam, 1 );
+ xDisp->dispatch( aURL, aDispatchArgs );
}
}
}
@@ -326,7 +338,7 @@ void SAL_CALL SfxEvents_Impl::notifyEvent( const DOCEVENTOBJECT& aEvent ) throw(
ANY aEventData = maEventData[ nIndex ];
aGuard.clear();
- Execute( aEventData, mpObjShell );
+ Execute( aEventData, css::document::DocumentEvent(aEvent.Source, aEvent.EventName, NULL, css::uno::Any()), mpObjShell );
}
//--------------------------------------------------------------------------------------------------------
@@ -609,14 +621,15 @@ SFX_IMPL_ONEINSTANCEFACTORY( SfxGlobalEvents_Impl );
SfxGlobalEvents_Impl::SfxGlobalEvents_Impl( const com::sun::star::uno::Reference < ::com::sun::star::lang::XMultiServiceFactory >& xSMGR)
: ModelCollectionMutexBase( )
, m_xSMGR (xSMGR )
- , m_aInterfaceContainer (m_aLock)
+ , m_aLegacyListeners (m_aLock)
+ , m_aDocumentListeners (m_aLock)
, pImp (0 )
{
m_refCount++;
SFX_APP();
- pImp = new GlobalEventConfig();
- m_xEvents = pImp;
- m_xJobsBinding = css::uno::Reference< css::task::XJobExecutor >(
+ pImp = new GlobalEventConfig();
+ m_xEvents = pImp;
+ m_xJobExecutorListener = css::uno::Reference< css::document::XEventListener >(
xSMGR->createInstance(::rtl::OUString::createFromAscii("com.sun.star.task.JobExecutor")),
UNO_QUERY);
m_refCount--;
@@ -660,7 +673,7 @@ void SAL_CALL SfxGlobalEvents_Impl::addEventListener(const css::uno::Reference<
throw(css::uno::RuntimeException)
{
// container is threadsafe
- m_aInterfaceContainer.addInterface(xListener);
+ m_aLegacyListeners.addInterface(xListener);
}
//-----------------------------------------------------------------------------
@@ -668,16 +681,49 @@ void SAL_CALL SfxGlobalEvents_Impl::removeEventListener(const css::uno::Referenc
throw(css::uno::RuntimeException)
{
// container is threadsafe
- m_aInterfaceContainer.removeInterface(xListener);
+ m_aLegacyListeners.removeInterface(xListener);
+}
+
+//-----------------------------------------------------------------------------
+void SAL_CALL SfxGlobalEvents_Impl::addDocumentEventListener( const css::uno::Reference< css::document::XDocumentEventListener >& _Listener )
+ throw(css::uno::RuntimeException)
+{
+ m_aDocumentListeners.addInterface( _Listener );
+}
+
+//-----------------------------------------------------------------------------
+void SAL_CALL SfxGlobalEvents_Impl::removeDocumentEventListener( const css::uno::Reference< css::document::XDocumentEventListener >& _Listener )
+ throw(css::uno::RuntimeException)
+{
+ m_aDocumentListeners.removeInterface( _Listener );
+}
+
+//-----------------------------------------------------------------------------
+void SAL_CALL SfxGlobalEvents_Impl::notifyDocumentEvent( const ::rtl::OUString& /*_EventName*/,
+ const css::uno::Reference< css::frame::XController2 >& /*_ViewController*/, const css::uno::Any& /*_Supplement*/ )
+ throw (css::lang::IllegalArgumentException, css::lang::NoSupportException, css::uno::RuntimeException)
+{
+ // we're a multiplexer only, no change to generate artifical events here
+ throw css::lang::NoSupportException(::rtl::OUString(), *this);
}
//-----------------------------------------------------------------------------
void SAL_CALL SfxGlobalEvents_Impl::notifyEvent(const css::document::EventObject& aEvent)
throw(css::uno::RuntimeException)
{
+ css::document::DocumentEvent aDocEvent(aEvent.Source, aEvent.EventName, NULL, css::uno::Any());
implts_notifyJobExecution(aEvent);
- implts_checkAndExecuteEventBindings(aEvent);
- implts_notifyListener(aEvent);
+ implts_checkAndExecuteEventBindings(aDocEvent);
+ implts_notifyListener(aDocEvent);
+}
+
+//-----------------------------------------------------------------------------
+void SAL_CALL SfxGlobalEvents_Impl::documentEventOccured( const ::css::document::DocumentEvent& _Event )
+ throw (::css::uno::RuntimeException)
+{
+ implts_notifyJobExecution(css::document::EventObject(_Event.Source, _Event.EventName));
+ implts_checkAndExecuteEventBindings(_Event);
+ implts_notifyListener(_Event);
}
//-----------------------------------------------------------------------------
@@ -740,9 +786,16 @@ void SAL_CALL SfxGlobalEvents_Impl::insert( const css::uno::Any& aElement )
aLock.clear();
// <- SAFE
- css::uno::Reference< css::document::XEventBroadcaster > xDocBroadcast(xDoc, UNO_QUERY);
- if (xDocBroadcast.is())
- xDocBroadcast->addEventListener(static_cast< css::document::XEventListener* >(this));
+ css::uno::Reference< css::document::XDocumentEventBroadcaster > xDocBroadcaster(xDoc, UNO_QUERY );
+ if (xDocBroadcaster.is())
+ xDocBroadcaster->addDocumentEventListener(this);
+ else
+ {
+ // try the "legacy version" of XDocumentEventBroadcaster, which is XEventBroadcaster
+ css::uno::Reference< css::document::XEventBroadcaster > xBroadcaster(xDoc, UNO_QUERY);
+ if (xBroadcaster.is())
+ xBroadcaster->addEventListener(static_cast< css::document::XEventListener* >(this));
+ }
}
//-----------------------------------------------------------------------------
@@ -770,9 +823,16 @@ void SAL_CALL SfxGlobalEvents_Impl::remove( const css::uno::Any& aElement )
aLock.clear();
// <- SAFE
- css::uno::Reference< css::document::XEventBroadcaster > xDocBroadcast(xDoc, UNO_QUERY);
- if (xDocBroadcast.is())
- xDocBroadcast->removeEventListener(static_cast< css::document::XEventListener* >(this));
+ css::uno::Reference< css::document::XDocumentEventBroadcaster > xDocBroadcaster(xDoc, UNO_QUERY );
+ if (xDocBroadcaster.is())
+ xDocBroadcaster->removeDocumentEventListener(this);
+ else
+ {
+ // try the "legacy version" of XDocumentEventBroadcaster, which is XEventBroadcaster
+ css::uno::Reference< css::document::XEventBroadcaster > xBroadcaster(xDoc, UNO_QUERY);
+ if (xBroadcaster.is())
+ xBroadcaster->removeEventListener(static_cast< css::document::XEventListener* >(this));
+ }
}
//-----------------------------------------------------------------------------
@@ -816,7 +876,7 @@ void SfxGlobalEvents_Impl::implts_notifyJobExecution(const css::document::EventO
{
// SAFE ->
::osl::ResettableMutexGuard aLock(m_aLock);
- css::uno::Reference< css::document::XEventListener > xJobExecutor(m_xJobsBinding.get(), UNO_QUERY);
+ css::uno::Reference< css::document::XEventListener > xJobExecutor(m_xJobExecutorListener);
aLock.clear();
// <- SAFE
if (xJobExecutor.is())
@@ -829,7 +889,7 @@ void SfxGlobalEvents_Impl::implts_notifyJobExecution(const css::document::EventO
}
//-----------------------------------------------------------------------------
-void SfxGlobalEvents_Impl::implts_checkAndExecuteEventBindings(const css::document::EventObject& aEvent)
+void SfxGlobalEvents_Impl::implts_checkAndExecuteEventBindings(const css::document::DocumentEvent& aEvent)
{
try
{
@@ -842,7 +902,7 @@ void SfxGlobalEvents_Impl::implts_checkAndExecuteEventBindings(const css::docume
css::uno::Any aAny;
if (xEvents.is())
aAny = xEvents->getByName(aEvent.EventName);
- Execute(aAny, 0);
+ Execute(aAny, aEvent, 0);
}
catch(const css::uno::RuntimeException& exRun)
{ throw exRun; }
@@ -851,19 +911,13 @@ void SfxGlobalEvents_Impl::implts_checkAndExecuteEventBindings(const css::docume
}
//-----------------------------------------------------------------------------
-void SfxGlobalEvents_Impl::implts_notifyListener(const css::document::EventObject& aEvent)
+void SfxGlobalEvents_Impl::implts_notifyListener(const css::document::DocumentEvent& aEvent)
{
- // container is threadsafe
- ::cppu::OInterfaceIteratorHelper aIt(m_aInterfaceContainer);
- while (aIt.hasMoreElements())
- {
- try
- {
- ((css::document::XEventListener*)aIt.next())->notifyEvent(aEvent);
- }
- catch(const css::uno::Exception&)
- { aIt.remove(); }
- }
+ // containers are threadsafe
+ css::document::EventObject aLegacyEvent(aEvent.Source, aEvent.EventName);
+ m_aLegacyListeners.notifyEach( &css::document::XEventListener::notifyEvent, aLegacyEvent );
+
+ m_aDocumentListeners.notifyEach( &css::document::XDocumentEventListener::documentEventOccured, aEvent );
}
//-----------------------------------------------------------------------------