/*
* Copyright 2013-2016 Canonical Ltd.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
#include "TouchEventSequenceWrapper.h"
#include
#include
TouchEventSequenceWrapper::TouchEventSequenceWrapper(QTest::QTouchEventSequence eventSequence, QQuickItem *item)
: QObject(0)
, m_eventSequence(eventSequence)
, m_item(item)
{
}
void TouchEventSequenceWrapper::commit(bool processEvents)
{
// Item might be deleted as a consequence of this event sequence being handled
// So store its window beforehand
QQuickWindow *window = m_item->window();
m_eventSequence.commit(processEvents);
if (window) {
QQuickWindowPrivate *wp = QQuickWindowPrivate::get(window);
if (wp->delayedTouch) {
wp->deliverDelayedTouchEvent();
// Touch events which constantly start animations (such as a behavior tracking
// the mouse point) need animations to start.
QQmlAnimationTimer *ut = QQmlAnimationTimer::instance();
if (ut && ut->hasStartAnimationPending())
ut->startAnimations();
}
}
}
void TouchEventSequenceWrapper::move(int touchId, int x, int y)
{
m_eventSequence.move(touchId, QPoint(x, y));
}
void TouchEventSequenceWrapper::press(int touchId, int x, int y)
{
m_eventSequence.press(touchId, QPoint(x, y));
}
void TouchEventSequenceWrapper::release(int touchId, int x, int y)
{
m_eventSequence.release(touchId, QPoint(x, y));
}
void TouchEventSequenceWrapper::stationary(int touchId)
{
m_eventSequence.stationary(touchId);
}