diff options
author | Morten Johan Sorvig <[email protected]> | 2012-01-19 08:02:09 +0100 |
---|---|---|
committer | Qt by Nokia <[email protected]> | 2012-03-12 21:20:31 +0100 |
commit | 6b87a9cfe51f7ad4e12aca59fdcb0ed242e47e90 (patch) | |
tree | 19d5f279be54fe49013950281cc3e7ecff6e8444 /src/plugins/accessible/quick | |
parent | 16e29f30e3483568a36dba7b37520ea1645d9a2e (diff) |
Accessibility: childAt_helper descends too far.
Recursive hit-testing using childAt_helper must stop
when it hits a leaf accessibility item. This leaf item
might not be a leaf item in Qt Quick - a button contains
text and mouse area items not visible to the accessibility
system for example.
Get the accessible interface and check if it has
children before recursing to the child items.
Change-Id: I2cc286cde4bce6b4ca340e8a1819edc5f84006a5
Reviewed-by: Jan-Arve Sæther <[email protected]>
Reviewed-by: Frederik Gladhorn <[email protected]>
Diffstat (limited to 'src/plugins/accessible/quick')
-rw-r--r-- | src/plugins/accessible/quick/qaccessiblequickview.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/plugins/accessible/quick/qaccessiblequickview.cpp b/src/plugins/accessible/quick/qaccessiblequickview.cpp index 042d8dcf06..1823dfea42 100644 --- a/src/plugins/accessible/quick/qaccessiblequickview.cpp +++ b/src/plugins/accessible/quick/qaccessiblequickview.cpp @@ -119,6 +119,11 @@ static QQuickItem *childAt_helper(QQuickItem *item, int x, int y) return 0; } + QScopedPointer<QAccessibleInterface> accessibleInterface(QAccessible::queryAccessibleInterface(item)); + if (accessibleInterface->childCount() == 0) { + return (itemScreenRect(item).contains(x, y)) ? item : 0; + } + QQuickItemPrivate *itemPrivate = QQuickItemPrivate::get(item); QList<QQuickItem *> children = itemPrivate->paintOrderChildItems(); |