vcl/qt5/Qt5AccessibleWidget.cxx | 58 +++++++++++++++++++++++++++++++--------- 1 file changed, 45 insertions(+), 13 deletions(-)
New commits: commit a8454eb805dfe3cddcef39189af126f5ca34295f Author: Samuel Mehrbrodt <samuel.mehrbr...@cib.de> AuthorDate: Tue Oct 2 11:56:00 2018 +0200 Commit: Samuel Mehrbrodt <samuel.mehrbr...@cib.de> CommitDate: Tue Oct 2 15:46:54 2018 +0200 Implement filter for Qt5AccessibleWidget::relations Change-Id: I1859d612e13b2f0d837aa65012552c441346cb1a Reviewed-on: https://gerrit.libreoffice.org/61236 Tested-by: Jenkins Reviewed-by: Samuel Mehrbrodt <samuel.mehrbr...@cib.de> diff --git a/vcl/qt5/Qt5AccessibleWidget.cxx b/vcl/qt5/Qt5AccessibleWidget.cxx index dc8061f2f68a..ffbca8d0338e 100644 --- a/vcl/qt5/Qt5AccessibleWidget.cxx +++ b/vcl/qt5/Qt5AccessibleWidget.cxx @@ -62,7 +62,7 @@ int Qt5AccessibleWidget::indexOfChild(const QAccessibleInterface* /* child */) c namespace { -QAccessible::Relation lcl_matchRelation(short relationType) +QAccessible::Relation lcl_matchUnoRelation(short relationType) { switch (relationType) { @@ -82,13 +82,46 @@ QAccessible::Relation lcl_matchRelation(short relationType) case AccessibleRelationType::NODE_CHILD_OF: case AccessibleRelationType::DESCRIBED_BY: default: + SAL_WARN("vcl.qt5", "Unmatched relation: " << relationType); return 0x0; } } + +short lcl_matchQtRelation(QAccessible::Relation relationType) +{ + switch (relationType) + { + case QAccessible::Controller: + return AccessibleRelationType::CONTROLLER_FOR; + case QAccessible::Controlled: + return AccessibleRelationType::CONTROLLED_BY; + case QAccessible::Label: + return AccessibleRelationType::LABEL_FOR; + case QAccessible::Labelled: + return AccessibleRelationType::LABELED_BY; + default: + SAL_WARN("vcl.qt5", "Unmatched relation: " << relationType); + } + return 0; +} + +void lcl_appendRelation(QVector<QPair<QAccessibleInterface*, QAccessible::Relation>>* relations, + AccessibleRelation aRelation) +{ + QAccessible::Relation aQRelation = lcl_matchUnoRelation(aRelation.RelationType); + sal_uInt32 nTargetCount = aRelation.TargetSet.getLength(); + + for (sal_uInt32 i = 0; i < nTargetCount; i++) + { + Reference<XAccessible> xAccessible(aRelation.TargetSet[i], uno::UNO_QUERY); + relations->append(QPair( + QAccessible::queryAccessibleInterface(new Qt5XAccessible(xAccessible)), aQRelation)); + } +} } QVector<QPair<QAccessibleInterface*, QAccessible::Relation>> - Qt5AccessibleWidget::relations(QAccessible::Relation /* match */) const +Qt5AccessibleWidget::relations(QAccessible::Relation match) const { QVector<QPair<QAccessibleInterface*, QAccessible::Relation>> relations; Reference<XAccessibleRelationSet> xRelationSet @@ -96,21 +129,20 @@ QVector<QPair<QAccessibleInterface*, QAccessible::Relation>> if (!xRelationSet.is()) return relations; - int count = xRelationSet->getRelationCount(); - for (int i = 0; i < count; i++) + if (match == QAccessible::AllRelations) { - AccessibleRelation aRelation = xRelationSet->getRelation(i); - QAccessible::Relation aQRelation = lcl_matchRelation(aRelation.RelationType); - sal_uInt32 nTargetCount = aRelation.TargetSet.getLength(); - - for (sal_uInt32 i = 0; i < nTargetCount; i++) + int count = xRelationSet->getRelationCount(); + for (int i = 0; i < count; i++) { - Reference<XAccessible> xAccessible(aRelation.TargetSet[i], uno::UNO_QUERY); - relations.append( - QPair(QAccessible::queryAccessibleInterface(new Qt5XAccessible(xAccessible)), - aQRelation)); + AccessibleRelation aRelation = xRelationSet->getRelation(i); + lcl_appendRelation(&relations, aRelation); } } + else + { + AccessibleRelation aRelation = xRelationSet->getRelation(lcl_matchQtRelation(match)); + lcl_appendRelation(&relations, aRelation); + } return relations; } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits