summaryrefslogtreecommitdiffstats
path: root/src/testlib/qtesttouch.h
diff options
context:
space:
mode:
authorMatthew Cattell <matthew.cattell@nokia.com>2011-09-06 13:38:23 +0200
committerSamuel Rødal <samuel.rodal@nokia.com>2011-09-06 13:41:01 +0200
commit079ec157f82f79814bd70a1f8753daa37b8d5c3f (patch)
treee55487f3f104ac87c21bdaa348bb3a2e8504083b /src/testlib/qtesttouch.h
parenta446ff945f4921e96dd366eb1f0eaa2d5f505428 (diff)
added support for qwindow
Change-Id: I5611a5d3590be596457dcad5e431ae110c2c8b47 Reviewed-on: http://codereview.qt.nokia.com/4258 Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
Diffstat (limited to 'src/testlib/qtesttouch.h')
-rw-r--r--src/testlib/qtesttouch.h75
1 files changed, 72 insertions, 3 deletions
diff --git a/src/testlib/qtesttouch.h b/src/testlib/qtesttouch.h
index 53a801b994..c855677189 100644
--- a/src/testlib/qtesttouch.h
+++ b/src/testlib/qtesttouch.h
@@ -51,7 +51,7 @@
#include <QtTest/qtestassert.h>
#include <QtTest/qtestsystem.h>
#include <QtTest/qtestspontaneevent.h>
-
+#include <QtGui/QWindowSystemInterface>
#include <QtCore/qmap.h>
#include <QtGui/qevent.h>
#include <QtWidgets/qwidget.h>
@@ -84,6 +84,14 @@ namespace QTest
p.setState(Qt::TouchPointPressed);
return *this;
}
+ QTouchEventSequence& press(int touchId, const QPoint &pt, QWindow *window = 0)
+ {
+ QTouchEvent::TouchPoint &p = point(touchId);
+ p.setScreenPos(mapToScreen(window, pt));
+ p.setState(Qt::TouchPointPressed);
+ return *this;
+ }
+
QTouchEventSequence& move(int touchId, const QPoint &pt, QWidget *widget = 0)
{
QTouchEvent::TouchPoint &p = point(touchId);
@@ -91,6 +99,13 @@ namespace QTest
p.setState(Qt::TouchPointMoved);
return *this;
}
+ QTouchEventSequence& move(int touchId, const QPoint &pt, QWindow *window = 0)
+ {
+ QTouchEvent::TouchPoint &p = point(touchId);
+ p.setScreenPos(mapToScreen(window, pt));
+ p.setState(Qt::TouchPointMoved);
+ return *this;
+ }
QTouchEventSequence& release(int touchId, const QPoint &pt, QWidget *widget = 0)
{
QTouchEvent::TouchPoint &p = point(touchId);
@@ -98,6 +113,13 @@ namespace QTest
p.setState(Qt::TouchPointReleased);
return *this;
}
+ QTouchEventSequence& release(int touchId, const QPoint &pt, QWindow *window = 0)
+ {
+ QTouchEvent::TouchPoint &p = point(touchId);
+ p.setScreenPos(mapToScreen(window, pt));
+ p.setState(Qt::TouchPointReleased);
+ return *this;
+ }
QTouchEventSequence& stationary(int touchId)
{
QTouchEvent::TouchPoint &p = point(touchId);
@@ -110,6 +132,10 @@ namespace QTest
: targetWidget(widget), deviceType(aDeviceType)
{
}
+ QTouchEventSequence(QWindow *window, QTouchEvent::DeviceType aDeviceType)
+ : targetWindow(window), deviceType(aDeviceType)
+ {
+ }
QTouchEventSequence(const QTouchEventSequence &v);
void operator=(const QTouchEventSequence&);
@@ -125,16 +151,53 @@ namespace QTest
return widget->mapToGlobal(pt);
return targetWidget ? targetWidget->mapToGlobal(pt) : pt;
}
+ QPoint mapToScreen(QWindow *window, const QPoint &pt)
+ {
+ if(window)
+ return window->mapToGlobal(pt);
+ return targetWindow ? targetWindow->mapToGlobal(pt) : pt;
+ }
+ QWindowSystemInterface::TouchPoint touchPoint(const QTouchEvent::TouchPoint& point)
+ {
+ QWindowSystemInterface::TouchPoint p;
+ p.id = point.id();
+ p.isPrimary = point.isPrimary();
+ p.normalPosition = point.screenRect().topLeft();
+ p.area = point.screenRect();
+ p.pressure = point.pressure();
+ p.state = point.state();
+ return p;
+ }
+ QList<struct QWindowSystemInterface::TouchPoint> touchPointList(const QList<QTouchEvent::TouchPoint>& pointList)
+ {
+ QList<struct QWindowSystemInterface::TouchPoint> newList;
+
+ foreach(QTouchEvent::TouchPoint p, pointList)
+ {
+ newList.append(touchPoint(p));
+ }
+ return newList;
+ }
void commit()
{
- qt_translateRawTouchEvent(targetWidget, deviceType, points.values());
- targetWidget = 0;
+ if(targetWindow)
+ {
+ QWindowSystemInterface::handleTouchEvent(targetWindow,QEvent::None,deviceType, touchPointList(points.values()));
+ targetWindow = 0;
+ }
+ else if(targetWidget)
+ {
+ qt_translateRawTouchEvent(targetWidget, deviceType, points.values());
+ targetWidget = 0;
+ }
}
QMap<int, QTouchEvent::TouchPoint> points;
QWidget *targetWidget;
+ QWindow *targetWindow;
QTouchEvent::DeviceType deviceType;
friend QTouchEventSequence touchEvent(QWidget *, QTouchEvent::DeviceType);
+ friend QTouchEventSequence touchEvent(QWindow *, QTouchEvent::DeviceType);
};
inline
@@ -143,6 +206,12 @@ namespace QTest
{
return QTouchEventSequence(widget, deviceType);
}
+ inline
+ QTouchEventSequence touchEvent(QWindow *window = 0,
+ QTouchEvent::DeviceType deviceType = QTouchEvent::TouchScreen)
+ {
+ return QTouchEventSequence(window, deviceType);
+ }
}