aboutsummaryrefslogtreecommitdiffstats
path: root/src/quicktestutils/quick/visualtestutils_p.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/quicktestutils/quick/visualtestutils_p.h')
-rw-r--r--src/quicktestutils/quick/visualtestutils_p.h44
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