summaryrefslogtreecommitdiff
path: root/comphelper/source/misc/accessiblewrapper.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'comphelper/source/misc/accessiblewrapper.cxx')
-rw-r--r--comphelper/source/misc/accessiblewrapper.cxx52
1 files changed, 33 insertions, 19 deletions
diff --git a/comphelper/source/misc/accessiblewrapper.cxx b/comphelper/source/misc/accessiblewrapper.cxx
index 4d4edb1393dc..3e356f434faa 100644
--- a/comphelper/source/misc/accessiblewrapper.cxx
+++ b/comphelper/source/misc/accessiblewrapper.cxx
@@ -79,15 +79,14 @@ namespace comphelper
xComp->removeEventListener( this );
}
// clear the map
- AccessibleMap aMap;
- m_aChildrenMap.swap( aMap );
+ m_aChildrenMap.clear();
}
Reference< XAccessible > OWrappedAccessibleChildrenManager::getAccessibleWrapperFor(
const Reference< XAccessible >& _rxKey )
{
- Reference< XAccessible > xValue;
+ rtl::Reference< OAccessibleWrapper > xValue;
if( !_rxKey.is() )
{
@@ -141,15 +140,14 @@ namespace comphelper
Reference< XComponent > xContextComponent;
if( rChild.second.is() )
- xContextComponent.set( rChild.second->getAccessibleContext(),
+ xContextComponent.set( rChild.second->getContextNoCreate(),
::css::uno::UNO_QUERY );
if( xContextComponent.is() )
xContextComponent->dispose();
}
// clear our children
- AccessibleMap aMap;
- m_aChildrenMap.swap( aMap );
+ m_aChildrenMap.clear();
}
@@ -308,7 +306,7 @@ namespace comphelper
}
- OAccessibleContextWrapper* OAccessibleWrapper::createAccessibleContext( const Reference< XAccessibleContext >& _rxInnerContext )
+ rtl::Reference<OAccessibleContextWrapper> OAccessibleWrapper::createAccessibleContext( const Reference< XAccessibleContext >& _rxInnerContext )
{
return new OAccessibleContextWrapper( getComponentContext(), _rxInnerContext, this, m_xParentAccessible );
}
@@ -347,9 +345,8 @@ namespace comphelper
,m_xChildMapper( new OWrappedAccessibleChildrenManager( getComponentContext() ) )
{
// determine if we're allowed to cache children
- Reference< XAccessibleStateSet > xStates( m_xInnerContext->getAccessibleStateSet( ) );
- OSL_ENSURE( xStates.is(), "OAccessibleContextWrapperHelper::OAccessibleContextWrapperHelper: no inner state set!" );
- m_xChildMapper->setTransientChildren( !xStates.is() || xStates->contains( AccessibleStateType::MANAGES_DESCENDANTS) );
+ sal_Int64 aStates = m_xInnerContext->getAccessibleStateSet( );
+ m_xChildMapper->setTransientChildren( aStates & AccessibleStateType::MANAGES_DESCENDANTS );
m_xChildMapper->setOwningAccessible( m_xOwningAccessible );
}
@@ -391,13 +388,13 @@ namespace comphelper
IMPLEMENT_FORWARD_XTYPEPROVIDER2( OAccessibleContextWrapperHelper, OComponentProxyAggregationHelper, OAccessibleContextWrapperHelper_Base )
- sal_Int32 OAccessibleContextWrapperHelper::baseGetAccessibleChildCount( )
+ sal_Int64 OAccessibleContextWrapperHelper::baseGetAccessibleChildCount( )
{
return m_xInnerContext->getAccessibleChildCount();
}
- Reference< XAccessible > OAccessibleContextWrapperHelper::baseGetAccessibleChild( sal_Int32 i )
+ Reference< XAccessible > OAccessibleContextWrapperHelper::baseGetAccessibleChild( sal_Int64 i )
{
// get the child of the wrapped component
Reference< XAccessible > xInnerChild = m_xInnerContext->getAccessibleChild( i );
@@ -419,7 +416,7 @@ namespace comphelper
if ( AccessibleEventId::STATE_CHANGED == _rEvent.EventId )
{
bool bChildTransienceChanged = false;
- sal_Int16 nChangeState = 0;
+ sal_Int64 nChangeState = 0;
if ( _rEvent.OldValue >>= nChangeState )
bChildTransienceChanged = bChildTransienceChanged || AccessibleStateType::MANAGES_DESCENDANTS == nChangeState;
if ( _rEvent.NewValue >>= nChangeState )
@@ -497,13 +494,13 @@ namespace comphelper
}
- sal_Int32 SAL_CALL OAccessibleContextWrapper::getAccessibleChildCount( )
+ sal_Int64 SAL_CALL OAccessibleContextWrapper::getAccessibleChildCount( )
{
return baseGetAccessibleChildCount();
}
- Reference< XAccessible > SAL_CALL OAccessibleContextWrapper::getAccessibleChild( sal_Int32 i )
+ Reference< XAccessible > SAL_CALL OAccessibleContextWrapper::getAccessibleChild( sal_Int64 i )
{
return baseGetAccessibleChild( i );
}
@@ -515,7 +512,7 @@ namespace comphelper
}
- sal_Int32 SAL_CALL OAccessibleContextWrapper::getAccessibleIndexInParent( )
+ sal_Int64 SAL_CALL OAccessibleContextWrapper::getAccessibleIndexInParent( )
{
return m_xInnerContext->getAccessibleIndexInParent();
}
@@ -545,7 +542,7 @@ namespace comphelper
}
- Reference< XAccessibleStateSet > SAL_CALL OAccessibleContextWrapper::getAccessibleStateSet( )
+ sal_Int64 SAL_CALL OAccessibleContextWrapper::getAccessibleStateSet( )
{
return m_xInnerContext->getAccessibleStateSet();
}
@@ -588,7 +585,7 @@ namespace comphelper
}
- void SAL_CALL OAccessibleContextWrapper::disposing()
+ void OAccessibleContextWrapper::implDisposing(const css::lang::EventObject* pEvent)
{
AccessibleEventNotifier::TClientId nClientId( 0 );
@@ -606,12 +603,29 @@ namespace comphelper
// --- </mutex lock> -----------------------------------------
// let the base class do
- OAccessibleContextWrapperHelper::dispose();
+ if (pEvent)
+ OAccessibleContextWrapperHelper::disposing(*pEvent);
+ else
+ OAccessibleContextWrapperHelper::dispose();
// notify the disposal
if ( nClientId )
AccessibleEventNotifier::revokeClientNotifyDisposing( nClientId, *this );
}
+
+ void SAL_CALL OAccessibleContextWrapper::disposing()
+ {
+ implDisposing(nullptr);
+ }
+
+ void SAL_CALL OAccessibleContextWrapper::disposing(const css::lang::EventObject& rEvent)
+ {
+ assert(rEvent.Source == Reference<XInterface>(m_xInnerContext, UNO_QUERY)
+ && "OAccessibleContextWrapper::disposing called with event source that's not the "
+ "wrapped a11y context");
+
+ implDisposing(&rEvent);
+ }
} // namespace accessibility