on xenial help sign in
Fix Gestures tests on Qt >= 5.9
commit4dd4d1e084ae285eb1b7216b0bf2c6371c1f476a authorIvan Semkin <ivan@semkin.ru> dateSat 23 Jun 2018, 19:10 (8 years ago) parent19a1e9b
3 files changed+21−3
tests/plugins/Ubuntu/CMakeLists.txt+1−1 tests/plugins/Ubuntu/Gestures/GestureTest.cpp+10−1 tests/plugins/Ubuntu/Gestures/tst_TouchGate.cpp+10−1
tests/plugins/Ubuntu/CMakeLists.txt+1−1
@@ -1 +1 @@
1−#add_subdirectory(Gestures) #FIXME broken with qt 5.9
1+add_subdirectory(Gestures)
tests/plugins/Ubuntu/Gestures/GestureTest.cpp+10−1
@@ -17,6 +17,7 @@
1717#include "GestureTest.h"
1818
1919#include <qpa/qwindowsysteminterface.h>
20+#include <private/qquickanimatorcontroller_p.h>
2021#include <private/qquickwindow_p.h>
2122#include <QQmlEngine>
2223#include <QQuickView>
@@ -108,7 +109,15 @@ void GestureTest::sendTouch(qint64 timestamp, int id, QPointF pos,
108109 QCoreApplication::sendEvent(m_view, &touchEvent);
109110
110111 QQuickWindowPrivate *windowPrivate = QQuickWindowPrivate::get(m_view);
111− windowPrivate->flushDelayedTouchEvent();
112+ if (windowPrivate->delayedTouch) {
113+ windowPrivate->deliverDelayedTouchEvent();
114+
115+ // Touch events which constantly start animations (such as a behavior tracking
116+ // the mouse point) need animations to start.
117+ QQmlAnimationTimer *ut = QQmlAnimationTimer::instance();
118+ if (ut && ut->hasStartAnimationPending())
119+ ut->startAnimations();
120+ }
112121}
113122
114123void GestureTest::passTime(qint64 timeSpanMs)
tests/plugins/Ubuntu/Gestures/tst_TouchGate.cpp+10−1
@@ -19,6 +19,7 @@
1919#include <QQmlEngine>
2020#include <QQuickView>
2121#include <QSharedPointer>
22+#include <private/qquickanimatorcontroller_p.h>
2223#include <private/qquickwindow_p.h>
2324
2425// C++ std lib
@@ -191,7 +192,15 @@ void tst_TouchGate::holdsEventsUntilGainsOwnership()
191192 if (!ownershipAfterTouchEnd) {
192193 touchRegistry->removeCandidateOwnerForTouch(0, candidateItem);
193194 QQuickWindowPrivate *wp = QQuickWindowPrivate::get(testItem->window());
194− wp->flushDelayedTouchEvent();
195+ if (wp->delayedTouch) {
196+ wp->deliverDelayedTouchEvent();
197+
198+ // Touch events which constantly start animations (such as a behavior tracking
199+ // the mouse point) need animations to start.
200+ QQmlAnimationTimer *ut = QQmlAnimationTimer::instance();
201+ if (ut && ut->hasStartAnimationPending())
202+ ut->startAnimations();
203+ }
195204 // TouchGate should now open its flood gates and let testItem get all
196205 // events from touch 0 produced so far
197206 QCOMPARE(testItem->touchEventsReceived.count(), 2);