summaryrefslogtreecommitdiffstats
path: root/tests/manual/quick/touchbrowser/touchmockingapplication.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/manual/quick/touchbrowser/touchmockingapplication.cpp')
-rw-r--r--tests/manual/quick/touchbrowser/touchmockingapplication.cpp91
1 files changed, 45 insertions, 46 deletions
diff --git a/tests/manual/quick/touchbrowser/touchmockingapplication.cpp b/tests/manual/quick/touchbrowser/touchmockingapplication.cpp
index 41b731a6a..b856365bf 100644
--- a/tests/manual/quick/touchbrowser/touchmockingapplication.cpp
+++ b/tests/manual/quick/touchbrowser/touchmockingapplication.cpp
@@ -29,12 +29,9 @@
#include "touchmockingapplication.h"
#include <qpa/qwindowsysteminterface.h>
-#include <QtCore/QEvent>
-#include <QtGui/QMouseEvent>
-#include <QtGui/QTouchDevice>
-#include <QtGui/QTouchEvent>
#include <QtQuick/QQuickItem>
#include <QtQuick/QQuickView>
+#include <QInputDevice>
static inline bool isTouchEvent(const QEvent* event)
{
@@ -94,10 +91,10 @@ bool TouchMockingApplication::notify(QObject* target, QEvent* event)
if (event->type() == QEvent::KeyRelease && static_cast<QKeyEvent*>(event)->key() == Qt::Key_Control) {
foreach (int id, m_heldTouchPoints)
if (m_touchPoints.contains(id) && !QGuiApplication::mouseButtons().testFlag(Qt::MouseButton(id))) {
- m_touchPoints[id].setState(Qt::TouchPointReleased);
+ QMutableEventPoint::from(m_touchPoints[id]).setState(QEventPoint::Released);
m_heldTouchPoints.remove(id);
} else
- m_touchPoints[id].setState(Qt::TouchPointStationary);
+ QMutableEventPoint::from(m_touchPoints[id]).setState(QEventPoint::Stationary);
sendTouchEvent(window, m_heldTouchPoints.isEmpty() ? QEvent::TouchEnd : QEvent::TouchUpdate, static_cast<QKeyEvent*>(event)->timestamp());
}
@@ -105,19 +102,19 @@ bool TouchMockingApplication::notify(QObject* target, QEvent* event)
if (isMouseEvent(event)) {
const QMouseEvent* const mouseEvent = static_cast<QMouseEvent*>(event);
- QTouchEvent::TouchPoint touchPoint;
- touchPoint.setPressure(1);
+ QEventPoint touchPoint;
+ QMutableEventPoint::from(touchPoint).setPressure(1);
QEvent::Type touchType = QEvent::None;
switch (mouseEvent->type()) {
case QEvent::MouseButtonPress:
- touchPoint.setId(mouseEvent->button());
+ QMutableEventPoint::from(touchPoint).setId(mouseEvent->button());
if (m_touchPoints.contains(touchPoint.id())) {
- touchPoint.setState(Qt::TouchPointMoved);
+ QMutableEventPoint::from(touchPoint).setState(QEventPoint::Updated);
touchType = QEvent::TouchUpdate;
} else {
- touchPoint.setState(Qt::TouchPointPressed);
+ QMutableEventPoint::from(touchPoint).setState(QEventPoint::Pressed);
// Check if more buttons are held down than just the event triggering one.
if (mouseEvent->buttons() > mouseEvent->button())
touchType = QEvent::TouchUpdate;
@@ -135,8 +132,8 @@ bool TouchMockingApplication::notify(QObject* target, QEvent* event)
return true;
}
touchType = QEvent::TouchUpdate;
- touchPoint.setId(mouseEvent->buttons());
- touchPoint.setState(Qt::TouchPointMoved);
+ QMutableEventPoint::from(touchPoint).setId(mouseEvent->buttons());
+ QMutableEventPoint::from(touchPoint).setState(QEventPoint::Updated);
break;
case QEvent::MouseButtonRelease:
// Check if any buttons are still held down after this event.
@@ -144,8 +141,8 @@ bool TouchMockingApplication::notify(QObject* target, QEvent* event)
touchType = QEvent::TouchUpdate;
else
touchType = QEvent::TouchEnd;
- touchPoint.setId(mouseEvent->button());
- touchPoint.setState(Qt::TouchPointReleased);
+ QMutableEventPoint::from(touchPoint).setId(mouseEvent->button());
+ QMutableEventPoint::from(touchPoint).setState(QEventPoint::Released);
break;
case QEvent::MouseButtonDblClick:
// Eat double-clicks, their accompanying press event is all we need.
@@ -163,7 +160,7 @@ bool TouchMockingApplication::notify(QObject* target, QEvent* event)
if (touchPoint.id() & Qt::RightButton)
updateTouchPoint(mouseEvent, touchPoint, Qt::RightButton);
- if (m_holdingControl && touchPoint.state() == Qt::TouchPointReleased) {
+ if (m_holdingControl && touchPoint.state() == QEventPoint::Released) {
// We avoid sending the release event because the Flickable is
// listening to mouse events and would start a bounce-back
// animation if it received a mouse release.
@@ -172,9 +169,9 @@ bool TouchMockingApplication::notify(QObject* target, QEvent* event)
}
// Update states for all other touch-points
- for (QHash<int, QTouchEvent::TouchPoint>::iterator it = m_touchPoints.begin(), end = m_touchPoints.end(); it != end; ++it) {
+ for (QHash<int, QEventPoint>::iterator it = m_touchPoints.begin(), end = m_touchPoints.end(); it != end; ++it) {
if (!(it.value().id() & touchPoint.id()))
- it.value().setState(Qt::TouchPointStationary);
+ QMutableEventPoint::from(it.value()).setState(QEventPoint::Stationary);
}
Q_ASSERT(touchType != QEvent::None);
@@ -189,14 +186,14 @@ bool TouchMockingApplication::notify(QObject* target, QEvent* event)
return QGuiApplication::notify(target, event);
}
-void TouchMockingApplication::updateTouchPoint(const QMouseEvent* mouseEvent, QTouchEvent::TouchPoint touchPoint, Qt::MouseButton mouseButton)
+void TouchMockingApplication::updateTouchPoint(const QMouseEvent* mouseEvent, QEventPoint touchPoint, Qt::MouseButton mouseButton)
{
// Ignore inserting additional touch points if Ctrl isn't held because it produces
// inconsistent touch events and results in assers in the gesture recognizers.
if (!m_holdingControl && m_touchPoints.size() && !m_touchPoints.contains(mouseButton))
return;
- if (m_holdingControl && touchPoint.state() == Qt::TouchPointReleased) {
+ if (m_holdingControl && touchPoint.state() == QEventPoint::Released) {
m_heldTouchPoints.insert(mouseButton);
return;
}
@@ -205,57 +202,59 @@ void TouchMockingApplication::updateTouchPoint(const QMouseEvent* mouseEvent, QT
// but since the canvas translates touch events we actually need to pass
// the screen position as the scene position to deliver the appropriate
// coordinates to the target.
- touchPoint.setPos(mouseEvent->localPos());
- touchPoint.setScenePos(mouseEvent->screenPos());
+ QMutableEventPoint::from(touchPoint).setPosition(mouseEvent->position());
+ QMutableEventPoint::from(touchPoint).setScenePosition(mouseEvent->globalPosition());
- if (touchPoint.state() == Qt::TouchPointPressed)
- touchPoint.setStartScenePos(mouseEvent->screenPos());
+ if (touchPoint.state() == QEventPoint::Pressed)
+ QMutableEventPoint::from(touchPoint).setScenePosition(mouseEvent->scenePosition());
else {
- const QTouchEvent::TouchPoint& oldTouchPoint = m_touchPoints[mouseButton];
- touchPoint.setStartScenePos(oldTouchPoint.startScenePos());
- touchPoint.setLastPos(oldTouchPoint.pos());
- touchPoint.setLastScenePos(oldTouchPoint.scenePos());
+ const QEventPoint& oldTouchPoint = m_touchPoints[mouseButton];
+ QMutableEventPoint::from(touchPoint).setGlobalLastPosition(oldTouchPoint.globalPosition());
}
// Update current touch-point.
- touchPoint.setId(mouseButton);
+ QMutableEventPoint::from(touchPoint).setId(mouseButton);
m_touchPoints.insert(mouseButton, touchPoint);
}
bool TouchMockingApplication::sendTouchEvent(QQuickView* window, QEvent::Type type, ulong timestamp)
{
- static QTouchDevice* device = 0;
+ static QPointingDevice* device = 0;
if (!device) {
- device = new QTouchDevice;
- device->setType(QTouchDevice::TouchScreen);
- QWindowSystemInterface::registerTouchDevice(device);
+ device = new QPointingDevice(QStringLiteral("MockTouchDevice"), 1,
+ QPointingDevice::DeviceType::TouchScreen,
+ QPointingDevice::PointerType::AllPointerTypes,
+ QInputDevice::Capability::All, 3, 3,
+ QString(), QPointingDeviceUniqueId(), window->rootObject());
+
+ QWindowSystemInterface::registerInputDevice(device);
}
m_pendingFakeTouchEventCount++;
- const QList<QTouchEvent::TouchPoint>& currentTouchPoints = m_touchPoints.values();
- Qt::TouchPointStates touchPointStates = Qt::TouchPointState();
- foreach (const QTouchEvent::TouchPoint& touchPoint, currentTouchPoints)
+ const QList<QEventPoint>& currentTouchPoints = m_touchPoints.values();
+ QEventPoint::States touchPointStates = QEventPoint::States();
+ foreach (const QEventPoint& touchPoint, currentTouchPoints)
touchPointStates |= touchPoint.state();
- QTouchEvent event(type, device, Qt::NoModifier, touchPointStates, currentTouchPoints);
+ QTouchEvent event(type, device, Qt::NoModifier, currentTouchPoints);
event.setTimestamp(timestamp);
event.setAccepted(false);
QGuiApplication::notify(window, &event);
- updateVisualMockTouchPoints(window,m_holdingControl ? currentTouchPoints : QList<QTouchEvent::TouchPoint>());
+ updateVisualMockTouchPoints(window, m_holdingControl ? currentTouchPoints : QList<QEventPoint>());
// Get rid of touch-points that are no longer valid
- foreach (const QTouchEvent::TouchPoint& touchPoint, currentTouchPoints) {
- if (touchPoint.state() == Qt::TouchPointReleased)
+ foreach (const QEventPoint& touchPoint, currentTouchPoints) {
+ if (touchPoint.state() == QEventPoint::Released)
m_touchPoints.remove(touchPoint.id());
}
return event.isAccepted();
}
-void TouchMockingApplication::updateVisualMockTouchPoints(QQuickView* window,const QList<QTouchEvent::TouchPoint>& touchPoints)
+void TouchMockingApplication::updateVisualMockTouchPoints(QQuickView* window,const QList<QEventPoint>& touchPoints)
{
if (touchPoints.isEmpty()) {
// Hide all touch indicator items.
@@ -265,11 +264,11 @@ void TouchMockingApplication::updateVisualMockTouchPoints(QQuickView* window,con
return;
}
- foreach (const QTouchEvent::TouchPoint& touchPoint, touchPoints) {
+ foreach (const QEventPoint& touchPoint, touchPoints) {
QQuickItem* mockTouchPointItem = m_activeMockComponents.value(touchPoint.id());
if (!mockTouchPointItem) {
- QQmlComponent touchMockPointComponent(window->engine(), QUrl("qrc:///qml/MockTouchPoint.qml"));
+ QQmlComponent touchMockPointComponent(window->engine(), QUrl("qrc:///MockTouchPoint.qml"));
mockTouchPointItem = qobject_cast<QQuickItem*>(touchMockPointComponent.create());
Q_ASSERT(mockTouchPointItem);
m_activeMockComponents.insert(touchPoint.id(), mockTouchPointItem);
@@ -278,10 +277,10 @@ void TouchMockingApplication::updateVisualMockTouchPoints(QQuickView* window,con
mockTouchPointItem->setParentItem(window->rootObject());
}
- mockTouchPointItem->setX(touchPoint.pos().x());
- mockTouchPointItem->setY(touchPoint.pos().y());
+ mockTouchPointItem->setX(touchPoint.position().x());
+ mockTouchPointItem->setY(touchPoint.position().y());
mockTouchPointItem->setWidth(touchPoint.ellipseDiameters().width());
mockTouchPointItem->setHeight(touchPoint.ellipseDiameters().height());
- mockTouchPointItem->setProperty("pressed", QVariant(touchPoint.state() != Qt::TouchPointReleased));
+ mockTouchPointItem->setProperty("pressed", QVariant(touchPoint.state() != QEventPoint::Released));
}
}