@@ -16,6 +16,7 @@
17#include <QtTest>
17#include <QtTest>
18#include <QQuickView>
18#include <QQuickView>
19+#include <QStyleHints>
20#include "GestureTest.h"
21#include "GestureTest.h"
@@ -29,6 +30,8 @@ public:
29private Q_SLOTS:
30private Q_SLOTS:
30 void sendMouseEventIfTouchIgnored_data();
31 void sendMouseEventIfTouchIgnored_data();
31 void sendMouseEventIfTouchIgnored();
32 void sendMouseEventIfTouchIgnored();
33+ void mouseDoubleClick_data();
34+ void mouseDoubleClick();
34tst_TouchDispatcher::tst_TouchDispatcher()
37tst_TouchDispatcher::tst_TouchDispatcher()
@@ -85,6 +88,62 @@ void tst_TouchDispatcher::sendMouseEventIfTouchIgnored()
85 QCOMPARE(gotMousePressEvent, shouldGetMousePress);
88 QCOMPARE(gotMousePressEvent, shouldGetMousePress);
91+void tst_TouchDispatcher::mouseDoubleClick_data()
93+ QTest::addColumn<ulong>("timeBetweenClicks");
94+ QTest::addColumn<bool>("shouldSendDoubleClick");
96+ QTest::newRow("double click") << static_cast<ulong>(qApp->styleHints()->mouseDoubleClickInterval() / 10) << true;
97+ QTest::newRow("two separate clicks") << static_cast<ulong>(qApp->styleHints()->mouseDoubleClickInterval() * 2) << false;
100+void tst_TouchDispatcher::mouseDoubleClick()
102+ QFETCH(ulong, timeBetweenClicks);
103+ QFETCH(bool, shouldSendDoubleClick);
104+ DummyItem *dummyItem = new DummyItem(m_view->rootObject());
105+ dummyItem->setAcceptedMouseButtons(Qt::LeftButton);
107+ TouchDispatcher touchDispatcher;
108+ touchDispatcher.setTargetItem(dummyItem);
110+ bool gotDoubleClickEvent = false;
111+ dummyItem->mouseDoubleClickEventHandler = [&](QMouseEvent *event) {
112+ gotDoubleClickEvent = true;
116+ dummyItem->touchEventHandler = [&](QTouchEvent *event) {
120+ ulong doubleClickInterval = static_cast<ulong>(qApp->styleHints()->mouseDoubleClickInterval());
122+ QList<QTouchEvent::TouchPoint> touchPoints;
124+ QTouchEvent::TouchPoint touchPoint;
125+ touchPoint.setId(0);
126+ touchPoint.setState(Qt::TouchPointPressed);
127+ touchPoints.append(touchPoint);
129+ ulong timestamp = 12345;
131+ touchDispatcher.dispatch(QEvent::TouchBegin, m_device, Qt::NoModifier, touchPoints, m_view, timestamp);
133+ touchPoints[0].setState(Qt::TouchPointReleased);
134+ timestamp += doubleClickInterval / 10;
136+ touchDispatcher.dispatch(QEvent::TouchEnd, m_device, Qt::NoModifier, touchPoints, m_view, timestamp);
138+ touchPoints[0].setId(1);
139+ touchPoints[0].setState(Qt::TouchPointPressed);
140+ timestamp += timeBetweenClicks;
142+ touchDispatcher.dispatch(QEvent::TouchBegin, m_device, Qt::NoModifier, touchPoints, m_view, timestamp);
144+ QCOMPARE(gotDoubleClickEvent, shouldSendDoubleClick);
88QTEST_MAIN(tst_TouchDispatcher)
147QTEST_MAIN(tst_TouchDispatcher)
90#include "tst_TouchDispatcher.moc"
149#include "tst_TouchDispatcher.moc"