summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/core/browser_accessibility_qt.cpp6
-rw-r--r--tests/auto/widgets/qwebengineaccessibility/tst_qwebengineaccessibility.cpp13
2 files changed, 19 insertions, 0 deletions
diff --git a/src/core/browser_accessibility_qt.cpp b/src/core/browser_accessibility_qt.cpp
index b48cbeeb9..106a71d4c 100644
--- a/src/core/browser_accessibility_qt.cpp
+++ b/src/core/browser_accessibility_qt.cpp
@@ -68,6 +68,12 @@ QObject *BrowserAccessibilityQt::object() const
QAccessibleInterface *BrowserAccessibilityQt::childAt(int x, int y) const
{
+ for (int i = 0; i < childCount(); ++i) {
+ QAccessibleInterface *childIface = child(i);
+ Q_ASSERT(childIface);
+ if (childIface->rect().contains(x,y))
+ return childIface;
+ }
return 0;
}
diff --git a/tests/auto/widgets/qwebengineaccessibility/tst_qwebengineaccessibility.cpp b/tests/auto/widgets/qwebengineaccessibility/tst_qwebengineaccessibility.cpp
index 8d98b06e0..d0c4fd527 100644
--- a/tests/auto/widgets/qwebengineaccessibility/tst_qwebengineaccessibility.cpp
+++ b/tests/auto/widgets/qwebengineaccessibility/tst_qwebengineaccessibility.cpp
@@ -126,6 +126,19 @@ void tst_QWebEngineView::hierarchy()
QCOMPARE(input->text(QAccessible::Name), QString());
QCOMPARE(input->text(QAccessible::Description), QString());
QCOMPARE(input->text(QAccessible::Value), QStringLiteral("some text"));
+
+ QRect windowRect = webView.geometry();
+ QRect inputRect = input->rect();
+ QVERIFY(!inputRect.isEmpty());
+ QVERIFY(windowRect.contains(inputRect));
+ QPoint inputCenter = inputRect.center();
+ QAccessibleInterface *hitTest = view;
+ QAccessibleInterface *child = Q_NULLPTR;
+ while (hitTest) {
+ child = hitTest;
+ hitTest = hitTest->childAt(inputCenter.x(), inputCenter.y());
+ }
+ QCOMPARE(input, child);
}
void tst_QWebEngineView::text()