diff options
Diffstat (limited to 'comphelper')
-rw-r--r-- | comphelper/source/misc/accessiblecomponenthelper.cxx | 3 | ||||
-rw-r--r-- | comphelper/source/misc/accessibleeventnotifier.cxx | 17 |
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 |