aboutsummaryrefslogtreecommitdiffstats
path: root/src/qmltest/quicktest.h
diff options
context:
space:
mode:
authorMitch Curtis <[email protected]>2025-02-24 15:30:38 +0800
committerMitch Curtis <[email protected]>2025-04-25 08:36:08 +0800
commit386e0851146bdfb24ad841ac388745c3af802673 (patch)
tree5c6305ecd1b5269659ab80f847bd97590471014f /src/qmltest/quicktest.h
parentcf748fce71bf06f3695248024c21d2083ee4c714 (diff)
QQuickTest: add and use active focus macros
Also add support for popups (when controlstestutils_p.h is included). [ChangeLog][Qt Quick Test] Added QVERIFY_ACTIVE_FOCUS and QTRY_VERIFY_ACTIVE_FOCUS macros that can be used to get detailed failure messages for when QQuickItem::hasActiveFocus should be true but isn't. Task-number: QTBUG-133858 Change-Id: I30c67a84ccc16e3969bac5661648d0062bc3d62c Reviewed-by: Mitch Curtis <[email protected]>
Diffstat (limited to 'src/qmltest/quicktest.h')
-rw-r--r--src/qmltest/quicktest.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/qmltest/quicktest.h b/src/qmltest/quicktest.h
index 4dd9127b18..8dde4876f0 100644
--- a/src/qmltest/quicktest.h
+++ b/src/qmltest/quicktest.h
@@ -79,8 +79,23 @@ Q_QMLTEST_EXPORT bool qIsPolishScheduled(const QQuickWindow *window);
#endif
Q_QMLTEST_EXPORT bool qWaitForPolish(const QQuickItem *item, int timeout = defaultTimeout);
Q_QMLTEST_EXPORT bool qWaitForPolish(const QQuickWindow *window, int timeout = defaultTimeout);
+
+// These are "private" functions that we need in the public macros and hence
+// can't live in private headers. This is the same as what qtestcase.h does with e.g. qCaught.
+// controlstestutils_p.h has an overload for QQuickPopup.
+[[nodiscard]] Q_QMLTEST_EXPORT QString qActiveFocusFailureMessage(const QQuickItem *item);
}
+#define QVERIFY_ACTIVE_FOCUS(item) \
+ do { \
+ QVERIFY2(item->hasActiveFocus(), qUtf8Printable(QQuickTest::qActiveFocusFailureMessage(item))); \
+ } while (false)
+
+#define QTRY_VERIFY_ACTIVE_FOCUS(item) \
+ do { \
+ QTRY_VERIFY2(item->hasActiveFocus(), qUtf8Printable(QQuickTest::qActiveFocusFailureMessage(item))); \
+ } while (false)
+
QT_END_NAMESPACE
#endif