summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@nokia.com>2011-10-04 14:20:05 +0200
committerQt by Nokia <qt-info@nokia.com>2011-10-06 01:28:12 +0200
commit74448afd03ee93c8ecbd9d18995c9b7d1d652494 (patch)
tree0150abb415b9440ad49a13ced38dacef9ae26600 /src
parent454f6f43dc8c578bca8afa1aafd4965a869e6e58 (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.cpp3
-rw-r--r--src/plugins/accessible/widgets/qaccessiblewidgets.cpp23
-rw-r--r--src/plugins/accessible/widgets/qaccessiblewidgets.h2
-rw-r--r--src/widgets/accessible/qaccessiblewidget.cpp22
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) {