summaryrefslogtreecommitdiffstats
path: root/src/widgets/accessible
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@nokia.com>2011-09-28 17:03:07 +0200
committerQt by Nokia <qt-info@nokia.com>2011-10-03 09:58:27 +0200
commitb67708f3d3b162b77c12ba73e8885cc499a3046b (patch)
treeabcc06b1e484a210739477ec4e44ebec3ed9abb9 /src/widgets/accessible
parent5ea07a9cd1220c1988199ed90a74dd4112fec6e9 (diff)
Use interfaces in QAccessibleWidget childAt.
Simplify the implementation of childAt. Using rect(child) depends on the virtual children. For QAccessibleMenuBar the implementation would assert. Change-Id: I6ef018a063beee67d7436dff148e8b0219ff2a3c Reviewed-on: http://codereview.qt-project.org/5742 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Jan-Arve Sæther <jan-arve.saether@nokia.com>
Diffstat (limited to 'src/widgets/accessible')
-rw-r--r--src/widgets/accessible/qaccessiblewidget.cpp24
1 files changed, 7 insertions, 17 deletions
diff --git a/src/widgets/accessible/qaccessiblewidget.cpp b/src/widgets/accessible/qaccessiblewidget.cpp
index 930e28002c..e2c867ea96 100644
--- a/src/widgets/accessible/qaccessiblewidget.cpp
+++ b/src/widgets/accessible/qaccessiblewidget.cpp
@@ -231,24 +231,14 @@ int QAccessibleWidget::childAt(int x, int y) const
if (!QRect(gp.x(), gp.y(), w->width(), w->height()).contains(x, y))
return -1;
- QWidgetList list = childWidgets(w);
- int ccount = childCount();
-
- // a complex child
- if (list.size() < ccount) {
- for (int i = 1; i <= ccount; ++i) {
- if (rect(i).contains(x, y))
- return i;
- }
- return 0;
- }
-
- QPoint rp = w->mapFromGlobal(QPoint(x, y));
- for (int i = 0; i<list.size(); ++i) {
- QWidget *child = list.at(i);
- if (!child->isWindow() && !child->isHidden() && child->geometry().contains(rp)) {
+ for (int i = 0; i < childCount(); ++i) {
+ QAccessibleInterface *childIface = child(i);
+ bool found = false;
+ if (childIface->rect().contains(x, y))
+ found = true;
+ delete childIface;
+ if (found)
return i + 1;
- }
}
return 0;
}