diff options
author | Frederik Gladhorn <frederik.gladhorn@nokia.com> | 2011-10-04 14:20:05 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-10-06 01:28:12 +0200 |
commit | 74448afd03ee93c8ecbd9d18995c9b7d1d652494 (patch) | |
tree | 0150abb415b9440ad49a13ced38dacef9ae26600 /src | |
parent | 454f6f43dc8c578bca8afa1aafd4965a869e6e58 (diff) |
Use child/parent function in QAccessibleWidget and test.
This also uncovered a missing implementation of child for
dock widgets.
Change-Id: Iac4c5a51d4626769af11b277a9a345e1e31dc490
Reviewed-on: http://codereview.qt-project.org/5987
Reviewed-by: Jan-Arve Sæther <jan-arve.saether@nokia.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/gui/accessible/qaccessibleobject.cpp | 3 | ||||
-rw-r--r-- | src/plugins/accessible/widgets/qaccessiblewidgets.cpp | 23 | ||||
-rw-r--r-- | src/plugins/accessible/widgets/qaccessiblewidgets.h | 2 | ||||
-rw-r--r-- | src/widgets/accessible/qaccessiblewidget.cpp | 22 |
4 files changed, 20 insertions, 30 deletions
diff --git a/src/gui/accessible/qaccessibleobject.cpp b/src/gui/accessible/qaccessibleobject.cpp index 8d90390e28..f7d6c3c72b 100644 --- a/src/gui/accessible/qaccessibleobject.cpp +++ b/src/gui/accessible/qaccessibleobject.cpp @@ -291,7 +291,6 @@ QAccessibleInterface *QAccessibleApplication::parent() const QAccessibleInterface *QAccessibleApplication::child(int index) const { - Q_ASSERT(index >= 0); const QObjectList tlo(topLevelObjects()); if (index >= 0 && index < tlo.count()) return QAccessible::queryAccessibleInterface(tlo.at(index)); @@ -299,7 +298,7 @@ QAccessibleInterface *QAccessibleApplication::child(int index) const } /*! \reimp */ -int QAccessibleApplication::navigate(RelationFlag relation, int entry, +int QAccessibleApplication::navigate(RelationFlag relation, int, QAccessibleInterface **target) const { if (!target) diff --git a/src/plugins/accessible/widgets/qaccessiblewidgets.cpp b/src/plugins/accessible/widgets/qaccessiblewidgets.cpp index 22644aad2b..676d140eb0 100644 --- a/src/plugins/accessible/widgets/qaccessiblewidgets.cpp +++ b/src/plugins/accessible/widgets/qaccessiblewidgets.cpp @@ -1267,21 +1267,14 @@ QAccessibleDockWidget::QAccessibleDockWidget(QWidget *widget) } -int QAccessibleDockWidget::navigate(RelationFlag relation, int entry, QAccessibleInterface **iface) const -{ - if (relation == Child) { - if (entry == 1) { - *iface = new QAccessibleTitleBar(dockWidget()); - return 0; - } else if (entry == 2) { - if (dockWidget()->widget()) - *iface = QAccessible::queryAccessibleInterface(dockWidget()->widget()); - return 0; - } - *iface = 0; - return -1; +QAccessibleInterface *QAccessibleDockWidget::child(int index) const +{ + if (index == 0) { + return new QAccessibleTitleBar(dockWidget()); + } else if (index == 1 && dockWidget()->widget()) { + return QAccessible::queryAccessibleInterface(dockWidget()->widget()); } - return QAccessibleWidget::navigate(relation, entry, iface); + return 0; } int QAccessibleDockWidget::childAt(int x, int y) const @@ -1332,7 +1325,7 @@ QAccessible::State QAccessibleDockWidget::state(int child) const return QAccessibleWidget::state(child); } -QRect QAccessibleDockWidget::rect (int child ) const +QRect QAccessibleDockWidget::rect(int child) const { QRect rect; bool mapToGlobal = true; diff --git a/src/plugins/accessible/widgets/qaccessiblewidgets.h b/src/plugins/accessible/widgets/qaccessiblewidgets.h index 8d0a13a04a..b82df2f234 100644 --- a/src/plugins/accessible/widgets/qaccessiblewidgets.h +++ b/src/plugins/accessible/widgets/qaccessiblewidgets.h @@ -250,7 +250,7 @@ class QAccessibleDockWidget: public QAccessibleWidget { public: explicit QAccessibleDockWidget(QWidget *widget); - int navigate(RelationFlag relation, int entry, QAccessibleInterface **iface) const; + QAccessibleInterface *child(int index) const; int indexOfChild(const QAccessibleInterface *child) const; int childCount() const; QRect rect (int child ) const; diff --git a/src/widgets/accessible/qaccessiblewidget.cpp b/src/widgets/accessible/qaccessiblewidget.cpp index e2c867ea96..65a067e8d0 100644 --- a/src/widgets/accessible/qaccessiblewidget.cpp +++ b/src/widgets/accessible/qaccessiblewidget.cpp @@ -407,7 +407,7 @@ QAccessible::Relation QAccessibleWidget::relationTo(int child, QRect sg = sibIface->rect(0); if (wg.intersects(sg)) { QAccessibleInterface *pIface = 0; - sibIface->navigate(Ancestor, 1, &pIface); + pIface = sibIface->parent(); if (pIface && !((sibIface->state(0) | state(0)) & Invisible)) { int wi = pIface->indexOfChild(this); int si = pIface->indexOfChild(sibIface); @@ -488,7 +488,7 @@ int QAccessibleWidget::navigate(RelationFlag relation, int entry, if (!iface) return -1; - iface->navigate(Child, entry, target); + *target = iface->child(entry - 1); delete iface; if (*target) return 0; @@ -594,8 +594,8 @@ int QAccessibleWidget::navigate(RelationFlag relation, int entry, int sibCount = pIface->childCount(); QAccessibleInterface *sibling = 0; for (int i = pIface->indexOfChild(this) + 1; i <= sibCount && entry; ++i) { - pIface->navigate(Child, i, &sibling); - if (!sibling || (sibling->state(0) & Invisible)) { + sibling = pIface->child(i - 1); + if (!sibling || (sibling->state() & Invisible)) { delete sibling; sibling = 0; continue; @@ -623,7 +623,7 @@ int QAccessibleWidget::navigate(RelationFlag relation, int entry, int index = pIface->indexOfChild(this); QAccessibleInterface *sibling = 0; for (int i = 1; i < index && entry; ++i) { - pIface->navigate(Child, i, &sibling); + sibling = pIface->child(i - 1); Q_ASSERT(sibling); if (!sibling || (sibling->state(0) & Invisible)) { delete sibling; @@ -680,16 +680,14 @@ int QAccessibleWidget::navigate(RelationFlag relation, int entry, int sibCount = pIface->childCount(); QAccessibleInterface *candidate = 0; for (int i = 0; i < sibCount && entry; ++i) { - const int childId = pIface->navigate(Child, i+1, &candidate); - Q_ASSERT(childId >= 0); - if (childId > 0) - candidate = pIface; - if (candidate->relationTo(childId, this, 0) & Label) + candidate = pIface->child(i); + Q_ASSERT(candidate); + if (candidate->relationTo(0, this, 0) & Label) --entry; if (!entry) break; - if (candidate != pIface) - delete candidate; + + delete candidate; candidate = 0; } if (!candidate) { |