diff options
-rw-r--r-- | src/core/browser_accessibility_qt.cpp | 6 | ||||
-rw-r--r-- | tests/auto/widgets/qwebengineaccessibility/tst_qwebengineaccessibility.cpp | 13 |
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() |