[API CHANGE] a11y: Use XAccessible for relation targets

Use a Sequence of XAccessible rather than its base
interface XInterface for AccessibleRelation's TargetSet.

As the targets are accessible objects as well,
anything other than XAccessible doesn't make much sense.
Using XAccessible right away makes that clearer and avoids
the need to query the XAccessible interface.

(The winaccessibility bridge was already using
`static_cast`, relying on the fact that the objects
are XAccessibles.)

The a11y UNO API is not published, so an API change
should be unproblematic.

Change-Id: I7f08e98d1ec303d5343d9a7954187cdd71495ebc
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166586
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
This commit is contained in:
Michael Weghorn
2024-04-24 23:04:35 +02:00
parent b6a8fec62c
commit d4f6534e88
27 changed files with 64 additions and 72 deletions
@@ -463,7 +463,7 @@ namespace accessibility
if ( xParent.is() )
{
rtl::Reference<utl::AccessibleRelationSetHelper> pRelationSetHelper = new utl::AccessibleRelationSetHelper;
Sequence< Reference< XInterface > > aSequence { xParent };
Sequence<Reference<XAccessible>> aSequence { xParent };
pRelationSetHelper->AddRelation(
AccessibleRelation( AccessibleRelationType::NODE_CHILD_OF, aSequence ) );
xRelSet = pRelationSetHelper;
@@ -1293,14 +1293,14 @@ Document::retrieveParagraphRelationSet( Paragraph const * pParagraph )
if ( aPara > m_aVisibleBegin && aPara < m_aVisibleEnd )
{
css::uno::Sequence< css::uno::Reference< css::uno::XInterface > > aSequence { getAccessibleChild( aPara - 1 ) };
css::uno::Sequence<css::uno::Reference<css::accessibility::XAccessible>> aSequence { getAccessibleChild(aPara - 1) };
css::accessibility::AccessibleRelation aRelation( css::accessibility::AccessibleRelationType::CONTENT_FLOWS_FROM, aSequence );
pRelationSetHelper->AddRelation( aRelation );
}
if ( aPara >= m_aVisibleBegin && aPara < m_aVisibleEnd -1 )
{
css::uno::Sequence< css::uno::Reference< css::uno::XInterface > > aSequence { getAccessibleChild( aPara + 1 ) };
css::uno::Sequence<css::uno::Reference<css::accessibility::XAccessible>> aSequence { getAccessibleChild(aPara + 1) };
css::accessibility::AccessibleRelation aRelation( css::accessibility::AccessibleRelationType::CONTENT_FLOWS_TO, aSequence );
pRelationSetHelper->AddRelation( aRelation );
}
@@ -1370,7 +1370,7 @@ void Document::FillAccessibleRelationSet( utl::AccessibleRelationSetHelper& r
{
if( getAccessibleParent()->getAccessibleContext()->getAccessibleRole() == css::accessibility::AccessibleRole::SCROLL_PANE )
{
css::uno::Sequence< css::uno::Reference< css::uno::XInterface > > aSequence { getAccessibleParent() };
css::uno::Sequence<css::uno::Reference<css::accessibility::XAccessible>> aSequence { getAccessibleParent() };
rRelationSet.AddRelation( css::accessibility::AccessibleRelation( css::accessibility::AccessibleRelationType::MEMBER_OF, aSequence ) );
}
else
@@ -36,7 +36,7 @@ void FloatingWindowAccessible::FillAccessibleRelationSet(utl::AccessibleRelation
vcl::Window* pParentWindow = pWindow->GetParent();
if( pParentWindow )
{
uno::Sequence< uno::Reference< uno::XInterface > > aSequence { pParentWindow->GetAccessible() };
uno::Sequence<uno::Reference<css::accessibility::XAccessible>> aSequence { pParentWindow->GetAccessible() };
rRelationSet.AddRelation( AccessibleRelation( AccessibleRelationType::SUB_WINDOW_OF, aSequence ) );
}
}
@@ -439,7 +439,7 @@ void VCLXAccessibleList::ProcessWindowEvent (const VclWindowEvent& rVclWindowEve
{
if (m_pListBoxHelper && (m_pListBoxHelper->GetStyle() & WB_DROPDOWN ) != WB_DROPDOWN)
{
uno::Sequence< uno::Reference< uno::XInterface > > aSequence { pBox->GetAccessible() };
uno::Sequence<uno::Reference<css::accessibility::XAccessible>> aSequence { pBox->GetAccessible() };
rRelationSet.AddRelation( com::sun::star::accessibility::AccessibleRelation( com::sun::star::accessibility::AccessibleRelationType::MEMBER_OF, aSequence ) );
}
}
@@ -81,7 +81,7 @@ void VCLXAccessibleRadioButton::FillAccessibleRelationSet( utl::AccessibleRelati
std::vector< VclPtr<RadioButton> > aGroup(pRadioButton->GetRadioButtonGroup());
if (!aGroup.empty())
{
std::vector< Reference< XInterface > > aVec;
std::vector<Reference<css::accessibility::XAccessible>> aVec;
aVec.reserve(aGroup.size());
std::transform(aGroup.begin(), aGroup.end(), std::back_inserter(aVec),
[](const VclPtr<RadioButton>& rxItem) { return rxItem->GetAccessible(); });
@@ -133,7 +133,7 @@ namespace dbaui
if( nIndex < 0 || nIndex >= getRelationCount() )
throw IndexOutOfBoundsException();
Sequence< Reference<XInterface> > aSeq;
Sequence<Reference<XAccessible>> aSeq;
if( m_pLine )
{
aSeq = { m_pLine->GetSourceWin()->GetAccessible(),
@@ -201,19 +201,19 @@ namespace dbaui
auto aIter = pView->getTableConnections(m_pTable);
auto aEnd = rConnectionList.end();
std::vector< Reference<XInterface> > aRelations;
std::vector< Reference<css::accessibility::XAccessible> > aRelations;
aRelations.reserve(5); // just guessing
// TODO JNA aIter comes from pView->getTableConnections(m_pTable)
// and aEnd comes from pView->getTableConnections().end()
for (; aIter != aEnd ; ++aIter )
{
uno::Reference<uno::XInterface> xInterface(
uno::Reference<css::accessibility::XAccessible> xAccessible(
getParentChild(aIter - rConnectionList.begin()));
aRelations.push_back(xInterface);
aRelations.push_back(xAccessible);
}
Sequence< Reference<XInterface> > aSeq(aRelations.data(), aRelations.size());
return AccessibleRelation(AccessibleRelationType::CONTROLLER_FOR,aSeq);
Sequence<Reference<css::accessibility::XAccessible>> aSeq(aRelations.data(), aRelations.size());
return AccessibleRelation(AccessibleRelationType::CONTROLLER_FOR, aSeq);
}
return AccessibleRelation();
}
@@ -736,8 +736,8 @@ namespace accessibility
if ( nMyParaIndex > 0 &&
mpParaManager->IsReferencable( nMyParaIndex - 1 ) )
{
uno::Sequence<uno::Reference<XInterface> > aSequence
{ cppu::getXWeak(mpParaManager->GetChild( nMyParaIndex - 1 ).first.get().get()) };
uno::Sequence<uno::Reference<XAccessible>> aSequence
{ mpParaManager->GetChild( nMyParaIndex - 1 ).first.get() };
AccessibleRelation aAccRel( AccessibleRelationType::CONTENT_FLOWS_FROM,
aSequence );
pAccRelSetHelper->AddRelation( aAccRel );
@@ -747,8 +747,8 @@ namespace accessibility
if ( (nMyParaIndex + 1) < mpParaManager->GetNum() &&
mpParaManager->IsReferencable( nMyParaIndex + 1 ) )
{
uno::Sequence<uno::Reference<XInterface> > aSequence
{ cppu::getXWeak(mpParaManager->GetChild( nMyParaIndex + 1 ).first.get().get()) };
uno::Sequence<uno::Reference<XAccessible>> aSequence
{ mpParaManager->GetChild( nMyParaIndex + 1 ).first.get() };
AccessibleRelation aAccRel( AccessibleRelationType::CONTENT_FLOWS_TO,
aSequence );
pAccRelSetHelper->AddRelation( aAccRel );
@@ -46,7 +46,7 @@ struct AccessibleRelation
INVALID. The set must not contain references to one object more
than once.</p>
*/
sequence< ::com::sun::star::uno::XInterface> TargetSet;
sequence<::com::sun::star::accessibility::XAccessible> TargetSet;
};
}; }; }; };
@@ -464,8 +464,8 @@ void ScAccessibleCell::AddRelation(const ScRange& rRange,
return;
}
uno::Sequence < uno::Reference < uno::XInterface > > aTargetSet( nCount );
uno::Reference < uno::XInterface >* pTargetSet = aTargetSet.getArray();
uno::Sequence<uno::Reference<css::accessibility::XAccessible>> aTargetSet(nCount);
uno::Reference <css::accessibility::XAccessible>* pTargetSet = aTargetSet.getArray();
sal_uInt32 nPos(0);
for (sal_uInt32 nRow = rRange.aStart.Row(); nRow <= sal::static_int_cast<sal_uInt32>(rRange.aEnd.Row()); ++nRow)
{
@@ -300,7 +300,7 @@ Reference< XAccessibleRelationSet > SAL_CALL ScAccessibleCsvRuler::getAccessible
css::uno::Reference<css::accessibility::XAccessible> xAccObj(static_cast<ScAccessibleCsvGrid*>(rGrid.GetAccessible()));
if( xAccObj.is() )
{
Sequence< Reference< XInterface > > aSeq{ xAccObj };
Sequence<Reference<css::accessibility::XAccessible>> aSeq{ xAccObj };
pRelationSet->AddRelation( AccessibleRelation( AccessibleRelationType::CONTROLLER_FOR, aSeq ) );
}
@@ -839,7 +839,7 @@ Reference< XAccessibleRelationSet > SAL_CALL ScAccessibleCsvGrid::getAccessibleR
css::uno::Reference<css::accessibility::XAccessible> xAccObj(static_cast<ScAccessibleCsvGrid*>(rRuler.GetAccessible()));
if( xAccObj.is() )
{
Sequence< Reference< XInterface > > aSeq{ xAccObj };
Sequence<Reference<css::accessibility::XAccessible>> aSeq{ xAccObj };
pRelationSet->AddRelation( AccessibleRelation( AccessibleRelationType::CONTROLLED_BY, aSeq ) );
}
}
@@ -517,13 +517,13 @@ uno::Reference< XAccessibleRelationSet > ScAccessibleEditObject::getAccessibleRe
vcl::Window *pLabeledBy = pWindow->GetAccessibleRelationLabeledBy();
if ( pLabeledBy && pLabeledBy != pWindow )
{
uno::Sequence< uno::Reference< uno::XInterface > > aSequence { pLabeledBy->GetAccessible() };
uno::Sequence<uno::Reference<css::accessibility::XAccessible>> aSequence { pLabeledBy->GetAccessible() };
rRelationSet->AddRelation( AccessibleRelation( AccessibleRelationType::LABELED_BY, aSequence ) );
}
vcl::Window* pMemberOf = pWindow->GetAccessibleRelationMemberOf();
if ( pMemberOf && pMemberOf != pWindow )
{
uno::Sequence< uno::Reference< uno::XInterface > > aSequence { pMemberOf->GetAccessible() };
uno::Sequence< uno::Reference<css::accessibility::XAccessible> > aSequence { pMemberOf->GetAccessible() };
rRelationSet->AddRelation( AccessibleRelation( AccessibleRelationType::MEMBER_OF, aSequence ) );
}
return rRelationSet;
+2 -2
View File
@@ -211,7 +211,7 @@ public:
void AddRelation (
const sal_Int16 nRelationType,
const Reference<XInterface>& rxObject);
const Reference<XAccessible>& rxObject);
//----- XAccessibleRelationSet --------------------------------------------
@@ -1194,7 +1194,7 @@ AccessibleRelationSet::AccessibleRelationSet()
void AccessibleRelationSet::AddRelation (
const sal_Int16 nRelationType,
const Reference<XInterface>& rxObject)
const Reference<XAccessible>& rxObject)
{
maRelations.emplace_back();
maRelations.back().RelationType = nRelationType;
@@ -551,7 +551,7 @@ Reference< XAccessibleRelationSet > SAL_CALL AccessibleControlShape::getAccessib
{
Reference < XAccessible > xAcc (pCtlAccShape->getAccessibleContext(), UNO_QUERY);
css::uno::Sequence< css::uno::Reference< css::uno::XInterface > > aSequence { xAcc };
css::uno::Sequence<css::uno::Reference<XAccessible>> aSequence { xAcc };
if( getAccessibleRole() == AccessibleRole::RADIO_BUTTON )
{
pRelationSetHelper->AddRelation( AccessibleRelation( AccessibleRelationType::MEMBER_OF, aSequence ) );
+1 -1
View File
@@ -360,7 +360,7 @@ uno::Reference<XAccessibleRelationSet> SAL_CALL
rtl::Reference<::utl::AccessibleRelationSetHelper> pRelationSet = new utl::AccessibleRelationSetHelper;
//this mxshape is the captioned shape
uno::Sequence< uno::Reference< uno::XInterface > > aSequence { mpParent->GetAccessibleCaption(mxShape) };
uno::Sequence<uno::Reference<css::accessibility::XAccessible>> aSequence { mpParent->GetAccessibleCaption(mxShape) };
if(aSequence[0])
{
pRelationSet->AddRelation(
@@ -480,7 +480,7 @@ Reference<XAccessibleRelationSet> SAL_CALL SvxRectCtlChildAccessibleContext::get
rtl::Reference<utl::AccessibleRelationSetHelper> pRelationSetHelper = new utl::AccessibleRelationSetHelper;
if( mxParent.is() )
{
uno::Sequence< uno::Reference< uno::XInterface > > aSequence { mxParent };
uno::Sequence<uno::Reference<css::accessibility::XAccessible>> aSequence { mxParent };
pRelationSetHelper->AddRelation( css::accessibility::AccessibleRelation( css::accessibility::AccessibleRelationType::MEMBER_OF, aSequence ) );
}
+2 -2
View File
@@ -750,7 +750,7 @@ uno::Reference<XAccessibleRelationSet> SAL_CALL SwAccessibleParagraph::getAccess
const SwContentFrame* pPrevContentFrame( pTextFrame->FindPrevCnt() );
if ( pPrevContentFrame )
{
uno::Sequence< uno::Reference<XInterface> > aSequence { GetMap()->GetContext( pPrevContentFrame ) };
uno::Sequence<uno::Reference<XAccessible>> aSequence { GetMap()->GetContext(pPrevContentFrame) };
AccessibleRelation aAccRel( AccessibleRelationType::CONTENT_FLOWS_FROM,
aSequence );
pHelper->AddRelation( aAccRel );
@@ -759,7 +759,7 @@ uno::Reference<XAccessibleRelationSet> SAL_CALL SwAccessibleParagraph::getAccess
const SwContentFrame* pNextContentFrame( pTextFrame->FindNextCnt( true ) );
if ( pNextContentFrame )
{
uno::Sequence< uno::Reference<XInterface> > aSequence { GetMap()->GetContext( pNextContentFrame ) };
uno::Sequence<uno::Reference<XAccessible>> aSequence { GetMap()->GetContext(pNextContentFrame) };
AccessibleRelation aAccRel( AccessibleRelationType::CONTENT_FLOWS_TO,
aSequence );
pHelper->AddRelation( aAccRel );
+1 -1
View File
@@ -271,7 +271,7 @@ SwFlyFrame* SwAccessibleTextFrame::getFlyFrame() const
AccessibleRelation SwAccessibleTextFrame::makeRelation( sal_Int16 nType, const SwFlyFrame* pFrame )
{
uno::Sequence<uno::Reference<XInterface> > aSequence { GetMap()->GetContext( pFrame ) };
uno::Sequence<uno::Reference<XAccessible>> aSequence { GetMap()->GetContext(pFrame) };
return AccessibleRelation( nType, aSequence );
}
+4 -6
View File
@@ -121,10 +121,9 @@ test::AccessibleTestBase::getFirstRelationTargetOfType(
const auto& rel = relset->getRelation(i);
if (rel.RelationType == relationType)
{
for (auto& target : rel.TargetSet)
for (const uno::Reference<accessibility::XAccessible>& targetAccessible :
rel.TargetSet)
{
uno::Reference<accessibility::XAccessible> targetAccessible(target,
uno::UNO_QUERY);
if (targetAccessible.is())
return targetAccessible->getAccessibleContext();
}
@@ -177,12 +176,11 @@ void test::AccessibleTestBase::dumpA11YTree(
<< " (" << rel.RelationType << ")";
std::cout << " targets=[";
int j = 0;
for (auto& target : rel.TargetSet)
for (const uno::Reference<accessibility::XAccessible>& xTarget : rel.TargetSet)
{
if (j++ > 0)
std::cout << ", ";
uno::Reference<accessibility::XAccessible> ta(target, uno::UNO_QUERY_THROW);
std::cout << AccessibilityTools::debugString(ta);
std::cout << AccessibilityTools::debugString(xTarget);
}
std::cout << "])";
}
@@ -393,21 +393,21 @@ void VCLXAccessibleComponent::FillAccessibleRelationSet( utl::AccessibleRelation
vcl::Window *pLabeledBy = pWindow->GetAccessibleRelationLabeledBy();
if ( pLabeledBy && pLabeledBy != pWindow )
{
uno::Sequence< uno::Reference< uno::XInterface > > aSequence { pLabeledBy->GetAccessible() };
uno::Sequence<uno::Reference<css::accessibility::XAccessible>> aSequence { pLabeledBy->GetAccessible() };
rRelationSet.AddRelation( accessibility::AccessibleRelation( accessibility::AccessibleRelationType::LABELED_BY, aSequence ) );
}
vcl::Window* pLabelFor = pWindow->GetAccessibleRelationLabelFor();
if ( pLabelFor && pLabelFor != pWindow )
{
uno::Sequence< uno::Reference< uno::XInterface > > aSequence { pLabelFor->GetAccessible() };
uno::Sequence<uno::Reference<css::accessibility::XAccessible>> aSequence { pLabelFor->GetAccessible() };
rRelationSet.AddRelation( accessibility::AccessibleRelation( accessibility::AccessibleRelationType::LABEL_FOR, aSequence ) );
}
vcl::Window* pMemberOf = pWindow->GetAccessibleRelationMemberOf();
if ( pMemberOf && pMemberOf != pWindow )
{
uno::Sequence< uno::Reference< uno::XInterface > > aSequence { pMemberOf->GetAccessible() };
uno::Sequence<uno::Reference<css::accessibility::XAccessible>> aSequence { pMemberOf->GetAccessible() };
rRelationSet.AddRelation( accessibility::AccessibleRelation( accessibility::AccessibleRelationType::MEMBER_OF, aSequence ) );
}
}
+5 -7
View File
@@ -188,7 +188,7 @@ static std::ostream &operator<<(std::ostream &s, NSObject *obj) {
{
AccessibleRelation relationMemberOf = rxAccessibleRelationSet -> getRelationByType ( AccessibleRelationType::MEMBER_OF );
if ( relationMemberOf.RelationType == AccessibleRelationType::MEMBER_OF && relationMemberOf.TargetSet.hasElements() )
return Reference < XAccessible > ( relationMemberOf.TargetSet[0], UNO_QUERY );
return relationMemberOf.TargetSet[0];
}
return Reference < XAccessible > ();
}
@@ -318,8 +318,7 @@ static std::ostream &operator<<(std::ostream &s, NSObject *obj) {
Reference < XAccessibleRelationSet > rxAccessibleRelationSet = [ self accessibleContext ] -> getAccessibleRelationSet();
AccessibleRelation const relationMemberOf = rxAccessibleRelationSet -> getRelationByType ( AccessibleRelationType::MEMBER_OF );
if ( relationMemberOf.RelationType == AccessibleRelationType::MEMBER_OF && relationMemberOf.TargetSet.hasElements() ) {
for ( const auto& i : relationMemberOf.TargetSet ) {
Reference < XAccessible > rMateAccessible( i, UNO_QUERY );
for (Reference <XAccessible> rMateAccessible : relationMemberOf.TargetSet ) {
if ( rMateAccessible.is() ) {
Reference< XAccessibleContext > rMateAccessibleContext( rMateAccessible -> getAccessibleContext() );
if ( rMateAccessibleContext.is() ) {
@@ -639,7 +638,7 @@ static std::ostream &operator<<(std::ostream &s, NSObject *obj) {
if ( [ title length ] == 0 ) {
AccessibleRelation relationLabeledBy = [ self accessibleContext ] -> getAccessibleRelationSet() -> getRelationByType ( AccessibleRelationType::LABELED_BY );
if ( relationLabeledBy.RelationType == AccessibleRelationType::LABELED_BY && relationLabeledBy.TargetSet.hasElements() ) {
Reference < XAccessible > rxAccessible ( relationLabeledBy.TargetSet[0], UNO_QUERY );
Reference <XAccessible> rxAccessible = relationLabeledBy.TargetSet[0];
titleElement = [ AquaA11yFactory wrapperForAccessibleContext: rxAccessible -> getAccessibleContext() ];
}
}
@@ -657,7 +656,7 @@ static std::ostream &operator<<(std::ostream &s, NSObject *obj) {
id titleForElement = nil;
AccessibleRelation relationLabelFor = [ self accessibleContext ] -> getAccessibleRelationSet() -> getRelationByType ( AccessibleRelationType::LABEL_FOR );
if ( relationLabelFor.RelationType == AccessibleRelationType::LABEL_FOR && relationLabelFor.TargetSet.hasElements() ) {
Reference < XAccessible > rxAccessible ( relationLabelFor.TargetSet[0], UNO_QUERY );
Reference <XAccessible> rxAccessible = relationLabelFor.TargetSet[0];
titleForElement = [ AquaA11yFactory wrapperForAccessibleContext: rxAccessible -> getAccessibleContext() ];
}
return titleForElement;
@@ -1120,8 +1119,7 @@ static Reference < XAccessibleContext > hitTestRunner ( css::awt::Point point,
if ( relationSet.is() && relationSet -> containsRelation ( AccessibleRelationType::SUB_WINDOW_OF )) {
// we have a valid relation to the parent element
AccessibleRelation const relation = relationSet -> getRelationByType ( AccessibleRelationType::SUB_WINDOW_OF );
for ( const auto & i : relation.TargetSet ) {
Reference < XAccessible > rxAccessible ( i, UNO_QUERY );
for (Reference<XAccessible> rxAccessible : relation.TargetSet) {
if ( rxAccessible.is() && rxAccessible -> getAccessibleContext().is() ) {
// hit test for children of parent
hitChild = hitTestRunner ( hitPoint, rxAccessible -> getAccessibleContext() );
+1 -2
View File
@@ -369,8 +369,7 @@ void Atspi2TestTree::compareObjects(const uno::Reference<accessibility::XAccessi
{
for (auto j = decltype(nLOTargetsCount){ 0 }; j < nLOTargetsCount; j++)
{
uno::Reference<accessibility::XAccessible> xLOTarget(xLORelation.TargetSet[j],
uno::UNO_QUERY_THROW);
uno::Reference<accessibility::XAccessible> xLOTarget = xLORelation.TargetSet[j];
compareObjects(xLOTarget, pAtspiRelation.getTarget(j), RecurseFlags::NONE);
}
}
+1 -1
View File
@@ -261,7 +261,7 @@ void lcl_appendRelation(QVector<QPair<QAccessibleInterface*, QAccessible::Relati
for (sal_uInt32 i = 0; i < nTargetCount; i++)
{
Reference<XAccessible> xAccessible(aRelation.TargetSet[i], uno::UNO_QUERY);
Reference<XAccessible> xAccessible = aRelation.TargetSet[i];
relations->append(
{ QAccessible::queryAccessibleInterface(QtAccessibleRegistry::getQObject(xAccessible)),
aQRelation });
+2 -2
View File
@@ -6281,7 +6281,7 @@ a11yrelationset SalInstanceDrawingArea::get_accessible_relation_set()
vcl::Window* pLabeledBy = pWindow->GetAccessibleRelationLabeledBy();
if (pLabeledBy && pLabeledBy != pWindow)
{
css::uno::Sequence<css::uno::Reference<css::uno::XInterface>> aSequence{
css::uno::Sequence<css::uno::Reference<css::accessibility::XAccessible>> aSequence{
pLabeledBy->GetAccessible()
};
pRelationSetHelper->AddRelation(css::accessibility::AccessibleRelation(
@@ -6290,7 +6290,7 @@ a11yrelationset SalInstanceDrawingArea::get_accessible_relation_set()
vcl::Window* pMemberOf = pWindow->GetAccessibleRelationMemberOf();
if (pMemberOf && pMemberOf != pWindow)
{
css::uno::Sequence<css::uno::Reference<css::uno::XInterface>> aSequence{
css::uno::Sequence<css::uno::Reference<css::accessibility::XAccessible>> aSequence{
pMemberOf->GetAccessible()
};
pRelationSetHelper->AddRelation(css::accessibility::AccessibleRelation(
+2 -3
View File
@@ -571,10 +571,9 @@ atk_object_wrapper_relation_new(const accessibility::AccessibleRelation& rRelati
std::vector<AtkObject*> aTargets;
for (const auto& rTarget : rRelation.TargetSet)
for (const uno::Reference<accessibility::XAccessible>& xTarget : rRelation.TargetSet)
{
uno::Reference< accessibility::XAccessible > xAccessible( rTarget, uno::UNO_QUERY );
aTargets.push_back(atk_object_wrapper_ref(xAccessible));
aTargets.push_back(atk_object_wrapper_ref(xTarget));
}
AtkRelation *pRel =
@@ -80,7 +80,7 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP CAccRelation::get_nTargets(long * nTargets)
if (nTargets == nullptr)
return E_INVALIDARG;
Sequence< Reference< XInterface > > xTargets = relation.TargetSet;
Sequence<Reference<XAccessible>> xTargets = relation.TargetSet;
*nTargets = xTargets.getLength();
return S_OK;
@@ -102,12 +102,12 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP CAccRelation::get_target(long targetIndex, IUn
if (target == nullptr)
return E_FAIL;
Sequence< Reference< XInterface > > xTargets = relation.TargetSet;
Sequence<Reference<XAccessible>> xTargets = relation.TargetSet;
int nCount = xTargets.getLength();
if( targetIndex >= nCount )
return E_FAIL;
Reference<XAccessible> xRAcc(xTargets[targetIndex], UNO_QUERY);
Reference<XAccessible> xRAcc = xTargets[targetIndex];
IAccessible* pRet = CMAccessible::get_IAccessibleFromXAccessible(xRAcc.get());
if (pRet)
{
@@ -139,7 +139,7 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP CAccRelation::get_targets(long, IUnknown * * t
if (nTargets == nullptr)
return E_INVALIDARG;
Sequence< Reference< XInterface > > xTargets = relation.TargetSet;
Sequence<Reference<XAccessible>> xTargets = relation.TargetSet;
int nCount = xTargets.getLength();
*target = static_cast<IUnknown*>(::CoTaskMemAlloc(nCount*sizeof(IUnknown)));
+10 -12
View File
@@ -717,12 +717,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP CMAccessible::get_accKeyboardShortcut(VARIANT
if(paccRelation == nullptr)
return S_FALSE;
Sequence< Reference< XInterface > > xTargets = paccRelation->TargetSet;
Reference<XInterface> pRAcc = xTargets[0];
Sequence<Reference<XAccessible>> xTargets = paccRelation->TargetSet;
Reference<XAccessible> xAcc = xTargets[0];
XAccessible* pXAcc = static_cast<XAccessible*>(pRAcc.get());
Reference<XAccessibleContext> xLabelContext = pXAcc->getAccessibleContext();
Reference<XAccessibleContext> xLabelContext = xAcc->getAccessibleContext();
if (!xLabelContext.is())
return S_FALSE;
@@ -742,8 +740,8 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP CMAccessible::get_accKeyboardShortcut(VARIANT
if(paccRelation)
{
xTargets = paccRelation->TargetSet;
pRAcc = xTargets[0];
if (m_xAccessible.get() != static_cast<XAccessible*>(pRAcc.get()))
xAcc = xTargets[0];
if (m_xAccessible.get() != xAcc.get())
return S_FALSE;
}
@@ -1794,8 +1792,8 @@ static XAccessible* getTheParentOfMember(XAccessible* pXAcc)
AccessibleRelation accRelation = pRrelationSet->getRelation(i);
if (accRelation.RelationType == AccessibleRelationType::MEMBER_OF)
{
Sequence< Reference< XInterface > > xTargets = accRelation.TargetSet;
return static_cast<XAccessible*>(xTargets[0].get());
Sequence<Reference<XAccessible>> xTargets = accRelation.TargetSet;
return xTargets[0].get();
}
}
return nullptr;
@@ -1863,15 +1861,15 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP CMAccessible::get_groupPosition(long __RPC_FAR
AccessibleRelation accRelation = pRrelationSet->getRelation(i);
if (accRelation.RelationType == AccessibleRelationType::MEMBER_OF)
{
Sequence< Reference< XInterface > > xTargets = accRelation.TargetSet;
Sequence<Reference<XAccessible>> xTargets = accRelation.TargetSet;
Reference<XInterface> pRAcc = xTargets[0];
Reference<XAccessible> xTarget = xTargets[0];
sal_Int64 nChildCount = pRParentContext->getAccessibleChildCount();
assert(nChildCount < std::numeric_limits<long>::max());
for (sal_Int64 j = 0; j< nChildCount; j++)
{
if( getTheParentOfMember(pRParentContext->getAccessibleChild(j).get())
== static_cast<XAccessible*>(pRAcc.get()) &&
== xTarget.get() &&
pRParentContext->getAccessibleChild(j)->getAccessibleContext()->getAccessibleRole() == AccessibleRole::RADIO_BUTTON)
number++;
if (pRParentContext->getAccessibleChild(j).get() == m_xAccessible.get())