summaryrefslogtreecommitdiff
path: root/comphelper
diff options
context:
space:
mode:
Diffstat (limited to 'comphelper')
-rw-r--r--comphelper/source/misc/accessiblecomponenthelper.cxx3
-rw-r--r--comphelper/source/misc/accessibleeventnotifier.cxx17
2 files changed, 17 insertions, 3 deletions
diff --git a/comphelper/source/misc/accessiblecomponenthelper.cxx b/comphelper/source/misc/accessiblecomponenthelper.cxx
index 816b3b69ee0c..07d05d31a31d 100644
--- a/comphelper/source/misc/accessiblecomponenthelper.cxx
+++ b/comphelper/source/misc/accessiblecomponenthelper.cxx
@@ -113,7 +113,7 @@ namespace comphelper
void OCommonAccessibleComponent::NotifyAccessibleEvent( const sal_Int16 _nEventId,
- const Any& _rOldValue, const Any& _rNewValue )
+ const Any& _rOldValue, const Any& _rNewValue, sal_Int32 nIndexHint )
{
if ( !m_nClientId )
// if we don't have a client id for the notifier, then we don't have listeners, then
@@ -126,6 +126,7 @@ namespace comphelper
aEvent.EventId = _nEventId;
aEvent.OldValue = _rOldValue;
aEvent.NewValue = _rNewValue;
+ aEvent.IndexHint = nIndexHint;
// let the notifier handle this event
AccessibleEventNotifier::addEvent( m_nClientId, aEvent );
diff --git a/comphelper/source/misc/accessibleeventnotifier.cxx b/comphelper/source/misc/accessibleeventnotifier.cxx
index d146d11812ba..37c9edda2625 100644
--- a/comphelper/source/misc/accessibleeventnotifier.cxx
+++ b/comphelper/source/misc/accessibleeventnotifier.cxx
@@ -246,8 +246,21 @@ void AccessibleEventNotifier::addEvent( const TClientId _nClient, const Accessib
return;
// since we're synchronous, again, we want to notify immediately
- aClientPos->second.notifyEach(aGuard, &XAccessibleEventListener::notifyEvent, _rEvent);
-
+ OInterfaceIteratorHelper4 aIt(aGuard, aClientPos->second);
+ // no need to hold lock here, and we don't want to hold lock while calling listeners
+ aGuard.unlock();
+ while (aIt.hasMoreElements())
+ {
+ try
+ {
+ aIt.next()->notifyEvent(_rEvent);
+ }
+ catch (Exception&)
+ {
+ // no assertion, because a broken access remote bridge or something like this
+ // can cause this exception
+ }
+ }
}
} // namespace comphelper