// Copyright (C) 2025 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only #include #include #include #include #include #include #include #include #include using namespace QQuickVisualTestUtils; class tst_ActiveFocus : public QQmlDataTest { Q_OBJECT public: tst_ActiveFocus(); private slots: void failureMessage(); }; tst_ActiveFocus::tst_ActiveFocus() : QQmlDataTest(QT_QMLTEST_DATADIR) { } void tst_ActiveFocus::failureMessage() { QQuickApplicationHelper helper(this, "activeFocus.qml"); QVERIFY2(helper.ready, helper.failureMessage()); QQuickWindow *window = helper.window; window->show(); window->requestActivate(); QVERIFY(QTest::qWaitForWindowActive(window)); auto *item = window->property("item").value(); QVERIFY(item); const QString failureMessageWithWindow = QQuickTest::qActiveFocusFailureMessage(item); QVERIFY2(QRegularExpression("item: .* focusPolicy: .* window's activeFocusItem: .*") .match(failureMessageWithWindow).hasMatch(), qPrintable("Failure message: " + failureMessageWithWindow)); item->setParentItem(nullptr); const QString failureMessageWithoutWindow = QQuickTest::qActiveFocusFailureMessage(item); QVERIFY2(QRegularExpression("item: .* focusPolicy: .* window's activeFocusItem: \\(unknown; item has no window\\)") .match(failureMessageWithoutWindow).hasMatch(), qPrintable("Failure message: " + failureMessageWithoutWindow)); } QTEST_MAIN(tst_ActiveFocus) #include "tst_activefocus.moc"