on xenial help sign in
Fix Components tst_DragHandle test on Qt >= 5.9
19a1e9bIvan Semkin
tests/qmltests/CMakeLists.txt+1−1
@@ -1,5 +1,5 @@
1
1
2−#add_subdirectory(Components) #FIXME broken with qt 5.9
2+add_subdirectory(Components)
3
3
4add_unity8_qmltest(. OrientedShell)
4add_unity8_qmltest(. OrientedShell)
5add_unity8_qmltest(. DisabledScreenNotice)
5add_unity8_qmltest(. DisabledScreenNotice)
tests/qmltests/Components/tst_DragHandle.cpp+19−2
@@ -20,6 +20,7 @@
20#include <qpa/qwindowsysteminterface.h>
20#include <qpa/qwindowsysteminterface.h>
21#include <QtQuick/QQuickView>
21#include <QtQuick/QQuickView>
22#include <QtQml/QQmlEngine>
22#include <QtQml/QQmlEngine>
23+#include <private/qquickanimatorcontroller_p.h>
23#include <private/qquickwindow_p.h>
24#include <private/qquickwindow_p.h>
24#include <UbuntuGestures/private/ucswipearea_p_p.h>
25#include <UbuntuGestures/private/ucswipearea_p_p.h>
25
26
@@ -179,7 +180,15 @@ void tst_DragHandle::flickAndHold(QQuickItem *dragHandle,
179 QTest::touchEvent(m_view, m_device).release(0, touchPoint.toPoint());
180 QTest::touchEvent(m_view, m_device).release(0, touchPoint.toPoint());
180
181
181 QQuickWindowPrivate *windowPrivate = QQuickWindowPrivate::get(m_view);
182 QQuickWindowPrivate *windowPrivate = QQuickWindowPrivate::get(m_view);
182− windowPrivate->flushDelayedTouchEvent();
183+ if (windowPrivate->delayedTouch) {
184+ windowPrivate->deliverDelayedTouchEvent();
185+
186+ // Touch events which constantly start animations (such as a behavior tracking
187+ // the mouse point) need animations to start.
188+ QQmlAnimationTimer *ut = QQmlAnimationTimer::instance();
189+ if (ut && ut->hasStartAnimationPending())
190+ ut->startAnimations();
191+ }
183}
192}
184
193
185void tst_DragHandle::drag(QPointF &touchPoint, const QPointF& direction, qreal distance,
194void tst_DragHandle::drag(QPointF &touchPoint, const QPointF& direction, qreal distance,
@@ -194,7 +203,15 @@ void tst_DragHandle::drag(QPointF &touchPoint, const QPointF& direction, qreal d
194 m_fakeTimeSource->m_msecsSinceReference += timeStep;
203 m_fakeTimeSource->m_msecsSinceReference += timeStep;
195 QTest::touchEvent(m_view, m_device).move(0, touchPoint.toPoint());
204 QTest::touchEvent(m_view, m_device).move(0, touchPoint.toPoint());
196
205
197− windowPrivate->flushDelayedTouchEvent();
206+ if (windowPrivate->delayedTouch) {
207+ windowPrivate->deliverDelayedTouchEvent();
208+
209+ // Touch events which constantly start animations (such as a behavior tracking
210+ // the mouse point) need animations to start.
211+ QQmlAnimationTimer *ut = QQmlAnimationTimer::instance();
212+ if (ut && ut->hasStartAnimationPending())
213+ ut->startAnimations();
214+ }
198 }
215 }
199}
216}
200
217