diff options
author | Matthew Cattell <matthew.cattell@nokia.com> | 2011-09-06 13:38:23 +0200 |
---|---|---|
committer | Samuel Rødal <samuel.rodal@nokia.com> | 2011-09-06 13:41:01 +0200 |
commit | 079ec157f82f79814bd70a1f8753daa37b8d5c3f (patch) | |
tree | e55487f3f104ac87c21bdaa348bb3a2e8504083b /src/testlib/qtesttouch.h | |
parent | a446ff945f4921e96dd366eb1f0eaa2d5f505428 (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.h | 75 |
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); + } } |