summaryrefslogtreecommitdiffstats
path: root/tests/auto/gui/kernel/qmouseevent/tst_qmouseevent.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/gui/kernel/qmouseevent/tst_qmouseevent.cpp')
-rw-r--r--tests/auto/gui/kernel/qmouseevent/tst_qmouseevent.cpp56
1 files changed, 55 insertions, 1 deletions
diff --git a/tests/auto/gui/kernel/qmouseevent/tst_qmouseevent.cpp b/tests/auto/gui/kernel/qmouseevent/tst_qmouseevent.cpp
index 660539d706..865785a108 100644
--- a/tests/auto/gui/kernel/qmouseevent/tst_qmouseevent.cpp
+++ b/tests/auto/gui/kernel/qmouseevent/tst_qmouseevent.cpp
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2016 The Qt Company Ltd.
+** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the test suite of the Qt Toolkit.
@@ -51,11 +51,17 @@ public:
int mouseReleaseButton;
int mouseReleaseButtons;
int mouseReleaseModifiers;
+ ulong timestamp;
ulong pressTimestamp;
+ ulong lastTimestamp;
+ QVector2D velocity;
protected:
void mousePressEvent(QMouseEvent *e) override
{
const auto &firstPoint = e->point(0);
+ qCDebug(lcTests) << e << firstPoint;
+ timestamp = firstPoint.timestamp();
+ lastTimestamp = firstPoint.lastTimestamp();
if (e->type() == QEvent::MouseButtonPress) {
auto firstPoint = e->points().first();
QCOMPARE(e->exclusiveGrabber(firstPoint), nullptr);
@@ -77,12 +83,23 @@ protected:
if (grabPassive)
e->addPassiveGrabber(firstPoint, this);
}
+ void mouseMoveEvent(QMouseEvent *e) override
+ {
+ qCDebug(lcTests) << e << e->points().first();
+ timestamp = e->points().first().timestamp();
+ lastTimestamp = e->points().first().lastTimestamp();
+ velocity = e->points().first().velocity();
+ }
void mouseReleaseEvent(QMouseEvent *e) override
{
+ qCDebug(lcTests) << e << e->points().first();
QWindow::mouseReleaseEvent(e);
mouseReleaseButton = e->button();
mouseReleaseButtons = e->buttons();
mouseReleaseModifiers = e->modifiers();
+ timestamp = e->points().first().timestamp();
+ lastTimestamp = e->points().first().lastTimestamp();
+ velocity = e->points().first().velocity();
mouseReleaseEventRecieved = true;
e->accept();
}
@@ -104,6 +121,7 @@ private slots:
void checkMouseReleaseEvent();
void grabbers_data();
void grabbers();
+ void velocity();
private:
MouseEventWidget* testMouseWidget;
@@ -279,5 +297,41 @@ void tst_QMouseEvent::grabbers()
QCOMPARE(firstEPD->passiveGrabbers.count(), 0);
}
+void tst_QMouseEvent::velocity()
+{
+ testMouseWidget->grabExclusive = true;
+ auto devPriv = QPointingDevicePrivate::get(const_cast<QPointingDevice *>(QPointingDevice::primaryPointingDevice()));
+ devPriv->activePoints.clear();
+
+ qCDebug(lcTests) << "sending mouse press event";
+ QPoint pos(10, 10);
+ QTest::mousePress(testMouseWidget, Qt::LeftButton, Qt::KeyboardModifiers(), pos);
+ QCOMPARE(devPriv->activePoints.count(), 1);
+ QVERIFY(devPriv->activePoints.count() <= 2);
+ const auto &firstPoint = devPriv->pointById(0)->eventPoint;
+ QVERIFY(firstPoint.timestamp() > 0);
+ QCOMPARE(firstPoint.state(), QEventPoint::State::Pressed);
+
+ ulong timestamp = firstPoint.timestamp();
+ for (int i = 1; i < 4; ++i) {
+ qCDebug(lcTests) << "sending mouse move event" << i;
+ pos += {10, 10};
+ QTest::mouseMove(testMouseWidget, pos, 1);
+ qApp->processEvents();
+ qCDebug(lcTests) << firstPoint;
+ // currently we expect it to be updated in-place in devPriv->activePoints
+ QVERIFY(firstPoint.timestamp() > timestamp);
+ QVERIFY(testMouseWidget->timestamp > testMouseWidget->lastTimestamp);
+ QCOMPARE(testMouseWidget->timestamp, firstPoint.timestamp());
+ timestamp = firstPoint.timestamp();
+ QVERIFY(testMouseWidget->velocity.x() > 0);
+ QVERIFY(testMouseWidget->velocity.y() > 0);
+ }
+ QTest::mouseRelease(testMouseWidget, Qt::LeftButton, Qt::KeyboardModifiers(), pos, 1);
+ qCDebug(lcTests) << firstPoint;
+ QVERIFY(testMouseWidget->velocity.x() > 0);
+ QVERIFY(testMouseWidget->velocity.y() > 0);
+}
+
QTEST_MAIN(tst_QMouseEvent)
#include "tst_qmouseevent.moc"