diff options
Diffstat (limited to 'src/quicktestutils/quick/visualtestutils_p.h')
-rw-r--r-- | src/quicktestutils/quick/visualtestutils_p.h | 44 |
1 files changed, 42 insertions, 2 deletions
diff --git a/src/quicktestutils/quick/visualtestutils_p.h b/src/quicktestutils/quick/visualtestutils_p.h index ae618a04e0..9b1c9a2aeb 100644 --- a/src/quicktestutils/quick/visualtestutils_p.h +++ b/src/quicktestutils/quick/visualtestutils_p.h @@ -1,5 +1,5 @@ // Copyright (C) 2021 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only #ifndef QQUICKVISUALTESTUTILS_P_H #define QQUICKVISUALTESTUTILS_P_H @@ -15,11 +15,15 @@ // We mean it. // +#include <QtGui/private/qguiapplication_p.h> +#include <QtGui/qpa/qplatformintegration.h> #include <QtQml/qqmlexpression.h> #include <QtQuick/private/qquickitem_p.h> #include <private/qmlutils_p.h> +#include <QtCore/qpointer.h> + QT_BEGIN_NAMESPACE class QQuickItemView; @@ -34,7 +38,33 @@ namespace QQuickVisualTestUtils void moveMouseAway(QQuickWindow *window); void centerOnScreen(QQuickWindow *window); - [[nodiscard]] bool delegateVisible(QQuickItem *item); + template<typename F> + void forEachStep(int steps, F &&func) + { + for (int i = 0; i < steps; ++i) { + const qreal progress = qreal(i) / steps; + func(progress); + } + } + + [[nodiscard]] QPoint lerpPoints(const QPoint &point1, const QPoint &point2, qreal t); + + class [[nodiscard]] PointLerper + { + public: + PointLerper(QQuickWindow *window, + const QPointingDevice *pointingDevice = QPointingDevice::primaryPointingDevice()); + + void move(const QPoint &pos, int steps = 10, int delayInMilliseconds = 1); + void move(int x, int y, int steps = 10, int delayInMilliseconds = 1); + + private: + QQuickWindow *mWindow = nullptr; + const QPointingDevice *mPointingDevice = nullptr; + QPoint mFrom; + }; + + [[nodiscard]] bool isDelegateVisible(QQuickItem *item); /* Find an item with the specified objectName. If index is supplied then the @@ -131,8 +161,10 @@ namespace QQuickVisualTestUtils }; Q_DECLARE_FLAGS(FindViewDelegateItemFlags, FindViewDelegateItemFlag) +#if QT_CONFIG(quick_itemview) QQuickItem* findViewDelegateItem(QQuickItemView *itemView, int index, FindViewDelegateItemFlags flags = FindViewDelegateItemFlag::PositionViewAtIndex); +#endif /*! \internal @@ -187,11 +219,19 @@ namespace QQuickVisualTestUtils QPointer<QWindow> m_window; Qt::KeyboardModifiers m_modifiers; }; + + QPoint mapCenterToWindow(const QQuickItem *item); + QPoint mapToWindow(const QQuickItem *item, qreal relativeX, qreal relativeY); + QPoint mapToWindow(const QQuickItem *item, const QPointF &relativePos); } #define QQUICK_VERIFY_POLISH(item) \ QTRY_COMPARE(QQuickItemPrivate::get(item)->polishScheduled, false) +#define SKIP_IF_NO_WINDOW_ACTIVATION \ +if (!(QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::WindowActivation))) \ + QSKIP("Window activation is not supported on this platform"); + QT_END_NAMESPACE #endif // QQUICKVISUALTESTUTILS_P_H |