summaryrefslogtreecommitdiffstats
path: root/tests/auto/gui/kernel/qtouchevent/tst_qtouchevent.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/gui/kernel/qtouchevent/tst_qtouchevent.cpp')
-rw-r--r--tests/auto/gui/kernel/qtouchevent/tst_qtouchevent.cpp316
1 files changed, 151 insertions, 165 deletions
diff --git a/tests/auto/gui/kernel/qtouchevent/tst_qtouchevent.cpp b/tests/auto/gui/kernel/qtouchevent/tst_qtouchevent.cpp
index fe11f39242..aa1f573aa9 100644
--- a/tests/auto/gui/kernel/qtouchevent/tst_qtouchevent.cpp
+++ b/tests/auto/gui/kernel/qtouchevent/tst_qtouchevent.cpp
@@ -31,11 +31,16 @@
**
****************************************************************************/
-#include <QtGui>
-#include <QtWidgets>
+#include <QtWidgets/QDesktopWidget>
+#include <QtWidgets/QGraphicsItem>
+#include <QtWidgets/QGraphicsScene>
+#include <QtWidgets/QGraphicsView>
+#include <QtWidgets/QGraphicsWidget>
+#include <QtWidgets/QWidget>
#include <QtTest>
#include <qpa/qwindowsysteminterface.h>
+// FIXME: Use static functions of QWindowSystemInterface introduced with HighDPI scaling in 5.6 instead.
static QWindowSystemInterface::TouchPoint touchPoint(const QTouchEvent::TouchPoint& pt)
{
QWindowSystemInterface::TouchPoint p;
@@ -72,8 +77,7 @@ public:
ulong timestamp;
QTouchDevice *deviceFromEvent;
- tst_QTouchEventWidget()
- : QWidget()
+ explicit tst_QTouchEventWidget(QWidget *parent = Q_NULLPTR) : QWidget(parent)
{
reset();
}
@@ -88,7 +92,7 @@ public:
deleteInTouchBegin = deleteInTouchUpdate = deleteInTouchEnd = false;
}
- bool event(QEvent *event)
+ bool event(QEvent *event) Q_DECL_OVERRIDE
{
switch (event->type()) {
case QEvent::TouchBegin:
@@ -142,8 +146,8 @@ public:
bool deleteInTouchBegin, deleteInTouchUpdate, deleteInTouchEnd;
tst_QTouchEventGraphicsItem **weakpointer;
- tst_QTouchEventGraphicsItem()
- : QGraphicsItem(), weakpointer(0)
+ explicit tst_QTouchEventGraphicsItem(QGraphicsItem *parent = Q_NULLPTR)
+ : QGraphicsItem(parent), weakpointer(0)
{
reset();
}
@@ -165,10 +169,10 @@ public:
deleteInTouchBegin = deleteInTouchUpdate = deleteInTouchEnd = false;
}
- QRectF boundingRect() const { return QRectF(0, 0, 10, 10); }
- void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *) { }
+ QRectF boundingRect() const Q_DECL_OVERRIDE { return QRectF(0, 0, 10, 10); }
+ void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *) Q_DECL_OVERRIDE { }
- bool sceneEvent(QEvent *event)
+ bool sceneEvent(QEvent *event) Q_DECL_OVERRIDE
{
switch (event->type()) {
case QEvent::TouchBegin:
@@ -214,9 +218,9 @@ class tst_QTouchEvent : public QObject
Q_OBJECT
public:
tst_QTouchEvent();
- ~tst_QTouchEvent() { }
private slots:
+ void cleanup();
void touchDisabledByDefault();
void touchEventAcceptedByDefault();
void touchBeginPropagatesWhenIgnored();
@@ -236,15 +240,18 @@ private:
QTouchDevice *touchPadDevice;
};
-tst_QTouchEvent::tst_QTouchEvent()
+tst_QTouchEvent::tst_QTouchEvent() : touchScreenDevice(new QTouchDevice), touchPadDevice(new QTouchDevice)
{
- touchScreenDevice = new QTouchDevice;
- touchPadDevice = new QTouchDevice;
touchPadDevice->setType(QTouchDevice::TouchPad);
QWindowSystemInterface::registerTouchDevice(touchScreenDevice);
QWindowSystemInterface::registerTouchDevice(touchPadDevice);
}
+void tst_QTouchEvent::cleanup()
+{
+ QVERIFY(QGuiApplication::topLevelWindows().isEmpty());
+}
+
void tst_QTouchEvent::touchDisabledByDefault()
{
// QWidget
@@ -261,8 +268,7 @@ void tst_QTouchEvent::touchDisabledByDefault()
Qt::NoModifier,
Qt::TouchPointPressed,
touchPoints);
- bool res = QApplication::sendEvent(&widget, &touchEvent);
- QVERIFY(!res);
+ QVERIFY(!QApplication::sendEvent(&widget, &touchEvent));
QVERIFY(!touchEvent.isAccepted());
}
@@ -290,8 +296,7 @@ void tst_QTouchEvent::touchDisabledByDefault()
Qt::NoModifier,
Qt::TouchPointPressed,
(QList<QTouchEvent::TouchPoint>() << touchPoint));
- bool res = QApplication::sendEvent(view.viewport(), &touchEvent);
- QVERIFY(!res);
+ QVERIFY(!QApplication::sendEvent(view.viewport(), &touchEvent));
QVERIFY(!touchEvent.isAccepted());
QVERIFY(!item.seenTouchBegin);
}
@@ -299,7 +304,7 @@ void tst_QTouchEvent::touchDisabledByDefault()
void tst_QTouchEvent::touchEventAcceptedByDefault()
{
- if (qApp->platformName().toLower() == QLatin1String("wayland"))
+ if (!QGuiApplication::platformName().compare(QLatin1String("wayland"), Qt::CaseInsensitive))
QSKIP("Wayland: This fails. Figure out why.");
// QWidget
@@ -317,16 +322,14 @@ void tst_QTouchEvent::touchEventAcceptedByDefault()
Qt::NoModifier,
Qt::TouchPointPressed,
touchPoints);
- bool res = QApplication::sendEvent(&widget, &touchEvent);
- QVERIFY(res);
- QVERIFY(touchEvent.isAccepted());
+ QVERIFY(QApplication::sendEvent(&widget, &touchEvent));
+ QVERIFY(!touchEvent.isAccepted()); // Qt 5.X ignores touch events.
// tst_QTouchEventWidget does handle, sending succeeds
tst_QTouchEventWidget touchWidget;
touchWidget.setAttribute(Qt::WA_AcceptTouchEvents);
touchEvent.ignore();
- res = QApplication::sendEvent(&touchWidget, &touchEvent);
- QVERIFY(res);
+ QVERIFY(QApplication::sendEvent(&touchWidget, &touchEvent));
QVERIFY(touchEvent.isAccepted());
}
@@ -355,8 +358,7 @@ void tst_QTouchEvent::touchEventAcceptedByDefault()
Qt::NoModifier,
Qt::TouchPointPressed,
(QList<QTouchEvent::TouchPoint>() << touchPoint));
- bool res = QApplication::sendEvent(view.viewport(), &touchEvent);
- QVERIFY(res);
+ QVERIFY(QApplication::sendEvent(view.viewport(), &touchEvent));
QVERIFY(touchEvent.isAccepted());
QVERIFY(item.seenTouchBegin);
}
@@ -383,8 +385,7 @@ void tst_QTouchEvent::touchBeginPropagatesWhenIgnored()
Qt::NoModifier,
Qt::TouchPointPressed,
touchPoints);
- bool res = QApplication::sendEvent(&grandchild, &touchEvent);
- QVERIFY(res);
+ QVERIFY(QApplication::sendEvent(&grandchild, &touchEvent));
QVERIFY(touchEvent.isAccepted());
QVERIFY(grandchild.seenTouchBegin);
QVERIFY(child.seenTouchBegin);
@@ -398,8 +399,7 @@ void tst_QTouchEvent::touchBeginPropagatesWhenIgnored()
grandchild.setAttribute(Qt::WA_AcceptTouchEvents, false);
touchEvent.ignore();
- res = QApplication::sendEvent(&grandchild, &touchEvent);
- QVERIFY(res);
+ QVERIFY(QApplication::sendEvent(&grandchild, &touchEvent));
QVERIFY(touchEvent.isAccepted());
QVERIFY(!grandchild.seenTouchBegin);
QVERIFY(child.seenTouchBegin);
@@ -435,8 +435,7 @@ void tst_QTouchEvent::touchBeginPropagatesWhenIgnored()
Qt::NoModifier,
Qt::TouchPointPressed,
(QList<QTouchEvent::TouchPoint>() << touchPoint));
- bool res = QApplication::sendEvent(view.viewport(), &touchEvent);
- QVERIFY(res);
+ QVERIFY(QApplication::sendEvent(view.viewport(), &touchEvent));
QVERIFY(touchEvent.isAccepted());
QVERIFY(grandchild.seenTouchBegin);
QVERIFY(child.seenTouchBegin);
@@ -471,8 +470,7 @@ void tst_QTouchEvent::touchBeginPropagatesWhenIgnored()
Qt::NoModifier,
Qt::TouchPointPressed,
(QList<QTouchEvent::TouchPoint>() << touchPoint));
- bool res = QApplication::sendEvent(view.viewport(), &touchEvent);
- QVERIFY(res);
+ QVERIFY(QApplication::sendEvent(view.viewport(), &touchEvent));
QVERIFY(touchEvent.isAccepted());
QVERIFY(!grandchild.seenTouchBegin);
QVERIFY(child.seenTouchBegin);
@@ -499,8 +497,7 @@ void tst_QTouchEvent::touchUpdateAndEndNeverPropagate()
Qt::NoModifier,
Qt::TouchPointPressed,
touchPoints);
- bool res = QApplication::sendEvent(&child, &touchBeginEvent);
- QVERIFY(res);
+ QVERIFY(QApplication::sendEvent(&child, &touchBeginEvent));
QVERIFY(touchBeginEvent.isAccepted());
QVERIFY(child.seenTouchBegin);
QVERIFY(!window.seenTouchBegin);
@@ -511,8 +508,7 @@ void tst_QTouchEvent::touchUpdateAndEndNeverPropagate()
Qt::NoModifier,
Qt::TouchPointMoved,
touchPoints);
- res = QApplication::sendEvent(&child, &touchUpdateEvent);
- QVERIFY(res);
+ QVERIFY(QApplication::sendEvent(&child, &touchUpdateEvent));
QVERIFY(!touchUpdateEvent.isAccepted());
QVERIFY(child.seenTouchUpdate);
QVERIFY(!window.seenTouchUpdate);
@@ -523,8 +519,7 @@ void tst_QTouchEvent::touchUpdateAndEndNeverPropagate()
Qt::NoModifier,
Qt::TouchPointReleased,
touchPoints);
- res = QApplication::sendEvent(&child, &touchEndEvent);
- QVERIFY(res);
+ QVERIFY(QApplication::sendEvent(&child, &touchEndEvent));
QVERIFY(!touchEndEvent.isAccepted());
QVERIFY(child.seenTouchEnd);
QVERIFY(!window.seenTouchEnd);
@@ -558,8 +553,7 @@ void tst_QTouchEvent::touchUpdateAndEndNeverPropagate()
Qt::NoModifier,
Qt::TouchPointPressed,
(QList<QTouchEvent::TouchPoint>() << touchPoint));
- bool res = QApplication::sendEvent(view.viewport(), &touchBeginEvent);
- QVERIFY(res);
+ QVERIFY(QApplication::sendEvent(view.viewport(), &touchBeginEvent));
QVERIFY(touchBeginEvent.isAccepted());
QVERIFY(child.seenTouchBegin);
QVERIFY(!root.seenTouchBegin);
@@ -571,8 +565,7 @@ void tst_QTouchEvent::touchUpdateAndEndNeverPropagate()
Qt::NoModifier,
Qt::TouchPointMoved,
(QList<QTouchEvent::TouchPoint>() << touchPoint));
- res = QApplication::sendEvent(view.viewport(), &touchUpdateEvent);
- QVERIFY(res);
+ QVERIFY(QApplication::sendEvent(view.viewport(), &touchUpdateEvent));
// the scene accepts the event, since it found an item to send the event to
QVERIFY(!touchUpdateEvent.isAccepted());
QVERIFY(child.seenTouchUpdate);
@@ -585,8 +578,7 @@ void tst_QTouchEvent::touchUpdateAndEndNeverPropagate()
Qt::NoModifier,
Qt::TouchPointReleased,
(QList<QTouchEvent::TouchPoint>() << touchPoint));
- res = QApplication::sendEvent(view.viewport(), &touchEndEvent);
- QVERIFY(res);
+ QVERIFY(QApplication::sendEvent(view.viewport(), &touchEndEvent));
// the scene accepts the event, since it found an item to send the event to
QVERIFY(!touchEndEvent.isAccepted());
QVERIFY(child.seenTouchEnd);
@@ -601,17 +593,20 @@ QPointF normalized(const QPointF &pos, const QRectF &rect)
void tst_QTouchEvent::basicRawEventTranslation()
{
- if (qApp->platformName().toLower() == QLatin1String("wayland"))
+ if (!QGuiApplication::platformName().compare(QLatin1String("wayland"), Qt::CaseInsensitive))
QSKIP("Wayland: This fails. Figure out why.");
tst_QTouchEventWidget touchWidget;
+ touchWidget.setWindowTitle(QTest::currentTestFunction());
touchWidget.setAttribute(Qt::WA_AcceptTouchEvents);
touchWidget.setGeometry(100, 100, 400, 300);
+ touchWidget.show();
+ QVERIFY(QTest::qWaitForWindowActive(&touchWidget));
QPointF pos = touchWidget.rect().center();
QPointF screenPos = touchWidget.mapToGlobal(pos.toPoint());
QPointF delta(10, 10);
- QRectF screenGeometry = qApp->desktop()->screenGeometry(&touchWidget);
+ QRectF screenGeometry = QApplication::desktop()->screenGeometry(&touchWidget);
QTouchEvent::TouchPoint rawTouchPoint;
rawTouchPoint.setId(0);
@@ -726,24 +721,24 @@ void tst_QTouchEvent::basicRawEventTranslation()
void tst_QTouchEvent::multiPointRawEventTranslationOnTouchScreen()
{
- if (qApp->platformName().toLower() == QLatin1String("wayland"))
+ if (!QGuiApplication::platformName().compare(QLatin1String("wayland"), Qt::CaseInsensitive))
QSKIP("Wayland: This fails. Figure out why.");
tst_QTouchEventWidget touchWidget;
+ touchWidget.setWindowTitle(QTest::currentTestFunction());
touchWidget.setAttribute(Qt::WA_AcceptTouchEvents);
touchWidget.setGeometry(100, 100, 400, 300);
- tst_QTouchEventWidget leftWidget;
- leftWidget.setParent(&touchWidget);
+ tst_QTouchEventWidget leftWidget(&touchWidget);
leftWidget.setAttribute(Qt::WA_AcceptTouchEvents);
leftWidget.setGeometry(0, 100, 100, 100);
- leftWidget.show();
- tst_QTouchEventWidget rightWidget;
- rightWidget.setParent(&touchWidget);
+ tst_QTouchEventWidget rightWidget(&touchWidget);
rightWidget.setAttribute(Qt::WA_AcceptTouchEvents);
rightWidget.setGeometry(300, 100, 100, 100);
- rightWidget.show();
+
+ touchWidget.show();
+ QVERIFY(QTest::qWaitForWindowActive(&touchWidget));
QPointF leftPos = leftWidget.rect().center();
QPointF rightPos = rightWidget.rect().center();
@@ -751,8 +746,7 @@ void tst_QTouchEvent::multiPointRawEventTranslationOnTouchScreen()
QPointF leftScreenPos = leftWidget.mapToGlobal(leftPos.toPoint());
QPointF rightScreenPos = rightWidget.mapToGlobal(rightPos.toPoint());
QPointF centerScreenPos = touchWidget.mapToGlobal(centerPos.toPoint());
- QPointF delta(10, 10);
- QRectF screenGeometry = qApp->desktop()->screenGeometry(&touchWidget);
+ QRectF screenGeometry = QApplication::desktop()->screenGeometry(&touchWidget);
QList<QTouchEvent::TouchPoint> rawTouchPoints;
rawTouchPoints.append(QTouchEvent::TouchPoint(0));
@@ -956,24 +950,25 @@ void tst_QTouchEvent::multiPointRawEventTranslationOnTouchScreen()
void tst_QTouchEvent::multiPointRawEventTranslationOnTouchPad()
{
- if (qApp->platformName().toLower() == QLatin1String("wayland"))
+ if (!QGuiApplication::platformName().compare(QLatin1String("wayland"), Qt::CaseInsensitive))
QSKIP("Wayland: This fails. Figure out why.");
tst_QTouchEventWidget touchWidget;
+ touchWidget.setWindowTitle(QTest::currentTestFunction());
touchWidget.setAttribute(Qt::WA_AcceptTouchEvents);
touchWidget.setGeometry(100, 100, 400, 300);
- tst_QTouchEventWidget leftWidget;
- leftWidget.setParent(&touchWidget);
+ tst_QTouchEventWidget leftWidget(&touchWidget);
leftWidget.setAttribute(Qt::WA_AcceptTouchEvents);
leftWidget.setGeometry(0, 100, 100, 100);
- leftWidget.show();
+ leftWidget.acceptTouchBegin =true;
- tst_QTouchEventWidget rightWidget;
- rightWidget.setParent(&touchWidget);
+ tst_QTouchEventWidget rightWidget(&touchWidget);
rightWidget.setAttribute(Qt::WA_AcceptTouchEvents);
rightWidget.setGeometry(300, 100, 100, 100);
- rightWidget.show();
+
+ touchWidget.show();
+ QVERIFY(QTest::qWaitForWindowActive(&touchWidget));
QPointF leftPos = leftWidget.rect().center();
QPointF rightPos = rightWidget.rect().center();
@@ -981,8 +976,7 @@ void tst_QTouchEvent::multiPointRawEventTranslationOnTouchPad()
QPointF leftScreenPos = leftWidget.mapToGlobal(leftPos.toPoint());
QPointF rightScreenPos = rightWidget.mapToGlobal(rightPos.toPoint());
QPointF centerScreenPos = touchWidget.mapToGlobal(centerPos.toPoint());
- QPointF delta(10, 10);
- QRectF screenGeometry = qApp->desktop()->screenGeometry(&touchWidget);
+ QRectF screenGeometry = QApplication::desktop()->screenGeometry(&touchWidget);
QList<QTouchEvent::TouchPoint> rawTouchPoints;
rawTouchPoints.append(QTouchEvent::TouchPoint(0));
@@ -1003,7 +997,8 @@ void tst_QTouchEvent::multiPointRawEventTranslationOnTouchPad()
QVERIFY(!touchWidget.seenTouchBegin);
QVERIFY(!touchWidget.seenTouchUpdate);
QVERIFY(!touchWidget.seenTouchEnd);
- QVERIFY(leftWidget.seenTouchBegin);
+ QEXPECT_FAIL("", "QTBUG-46266, fails in Qt 5", Abort);
+ QVERIFY(!leftWidget.seenTouchBegin);
QVERIFY(!leftWidget.seenTouchUpdate);
QVERIFY(!leftWidget.seenTouchEnd);
QVERIFY(!rightWidget.seenTouchBegin);
@@ -1186,19 +1181,15 @@ void tst_QTouchEvent::multiPointRawEventTranslationOnTouchPad()
void tst_QTouchEvent::deleteInEventHandler()
{
- if (qApp->platformName().toLower() == QLatin1String("wayland"))
+ if (!QGuiApplication::platformName().compare(QLatin1String("wayland"), Qt::CaseInsensitive))
QSKIP("Wayland: This fails. Figure out why.");
// QWidget
{
QWidget window;
- tst_QTouchEventWidget *child1, *child2, *child3;
- child1 = new tst_QTouchEventWidget;
- child2 = new tst_QTouchEventWidget;
- child3 = new tst_QTouchEventWidget;
- child1->setParent(&window);
- child2->setParent(&window);
- child3->setParent(&window);
+ QPointer<tst_QTouchEventWidget> child1 = new tst_QTouchEventWidget(&window);
+ QPointer<tst_QTouchEventWidget> child2 = new tst_QTouchEventWidget(&window);
+ QPointer<tst_QTouchEventWidget> child3 = new tst_QTouchEventWidget(&window);
child1->setAttribute(Qt::WA_AcceptTouchEvents);
child2->setAttribute(Qt::WA_AcceptTouchEvents);
child3->setAttribute(Qt::WA_AcceptTouchEvents);
@@ -1223,47 +1214,43 @@ void tst_QTouchEvent::deleteInEventHandler()
Qt::NoModifier,
Qt::TouchPointReleased,
touchPoints);
- QPointer<QWidget> p;
- bool res;
-
touchBeginEvent.ignore();
- p = child1;
- res = QApplication::sendEvent(child1, &touchBeginEvent);
+ QVERIFY(QApplication::sendEvent(child1, &touchBeginEvent));
// event is handled, but widget should be deleted
- QVERIFY(res && touchBeginEvent.isAccepted() && p.isNull());
+ QVERIFY(touchBeginEvent.isAccepted());
+ QVERIFY(child1.isNull());
touchBeginEvent.ignore();
- p = child2;
- res = QApplication::sendEvent(child2, &touchBeginEvent);
- QVERIFY(res && touchBeginEvent.isAccepted() && !p.isNull());
+ QVERIFY(QApplication::sendEvent(child2, &touchBeginEvent));
+ QVERIFY(touchBeginEvent.isAccepted());
+ QVERIFY(!child2.isNull());
touchUpdateEvent.ignore();
- res = QApplication::sendEvent(child2, &touchUpdateEvent);
- QVERIFY(res && touchUpdateEvent.isAccepted() && p.isNull());
+ QVERIFY(QApplication::sendEvent(child2, &touchUpdateEvent));
+ QVERIFY(touchUpdateEvent.isAccepted());
+ QVERIFY(child2.isNull());
touchBeginEvent.ignore();
- p = child3;
- res = QApplication::sendEvent(child3, &touchBeginEvent);
- QVERIFY(res && touchBeginEvent.isAccepted() && !p.isNull());
+ QVERIFY(QApplication::sendEvent(child3, &touchBeginEvent));
+ QVERIFY(touchBeginEvent.isAccepted());
+ QVERIFY(!child3.isNull());
touchUpdateEvent.ignore();
- res = QApplication::sendEvent(child3, &touchUpdateEvent);
- QVERIFY(res && touchUpdateEvent.isAccepted() && !p.isNull());
+ QVERIFY(QApplication::sendEvent(child3, &touchUpdateEvent));
+ QVERIFY(touchUpdateEvent.isAccepted());
+ QVERIFY(!child3.isNull());
touchEndEvent.ignore();
- res = QApplication::sendEvent(child3, &touchEndEvent);
- QVERIFY(res && touchEndEvent.isAccepted() && p.isNull());
+ QVERIFY(QApplication::sendEvent(child3, &touchEndEvent));
+ QVERIFY(touchEndEvent.isAccepted());
+ QVERIFY(child3.isNull());
}
// QGraphicsView
{
QGraphicsScene scene;
QGraphicsView view(&scene);
- tst_QTouchEventGraphicsItem *root, *child1, *child2, *child3;
- root = new tst_QTouchEventGraphicsItem;
- child1 = new tst_QTouchEventGraphicsItem;
- child2 = new tst_QTouchEventGraphicsItem;
- child3 = new tst_QTouchEventGraphicsItem;
- child1->setParentItem(root);
- child2->setParentItem(root);
- child3->setParentItem(root);
+ QScopedPointer<tst_QTouchEventGraphicsItem> root(new tst_QTouchEventGraphicsItem);
+ tst_QTouchEventGraphicsItem *child1 = new tst_QTouchEventGraphicsItem(root.data());
+ tst_QTouchEventGraphicsItem *child2 = new tst_QTouchEventGraphicsItem(root.data());
+ tst_QTouchEventGraphicsItem *child3 = new tst_QTouchEventGraphicsItem(root.data());
child1->setZValue(1.);
child2->setZValue(0.);
child3->setZValue(-1.);
@@ -1274,7 +1261,7 @@ void tst_QTouchEvent::deleteInEventHandler()
child2->deleteInTouchUpdate = true;
child3->deleteInTouchEnd = true;
- scene.addItem(root);
+ scene.addItem(root.data());
view.resize(200, 200);
view.fitInView(scene.sceneRect());
@@ -1302,71 +1289,75 @@ void tst_QTouchEvent::deleteInEventHandler()
Qt::NoModifier,
Qt::TouchPointReleased,
touchPoints);
- bool res;
child1->weakpointer = &child1;
touchBeginEvent.ignore();
- res = QApplication::sendEvent(view.viewport(), &touchBeginEvent);
- QVERIFY(res && touchBeginEvent.isAccepted() && !child1);
+ QVERIFY(QApplication::sendEvent(view.viewport(), &touchBeginEvent));
+ QVERIFY(touchBeginEvent.isAccepted());
+ QVERIFY(!child1);
touchUpdateEvent.ignore();
- res = QApplication::sendEvent(view.viewport(), &touchUpdateEvent);
- QVERIFY(res && touchUpdateEvent.isAccepted() && !child1);
+ QVERIFY(QApplication::sendEvent(view.viewport(), &touchUpdateEvent));
+ QVERIFY(!touchUpdateEvent.isAccepted()); // Qt 5.X ignores touch events.
+ QVERIFY(!child1);
touchEndEvent.ignore();
- res = QApplication::sendEvent(view.viewport(), &touchEndEvent);
- QVERIFY(res && touchUpdateEvent.isAccepted() && !child1);
+ QVERIFY(QApplication::sendEvent(view.viewport(), &touchEndEvent));
+ QVERIFY(!touchUpdateEvent.isAccepted());
+ QVERIFY(!child1);
child2->weakpointer = &child2;
touchBeginEvent.ignore();
- res = QApplication::sendEvent(view.viewport(), &touchBeginEvent);
- QVERIFY(res && touchBeginEvent.isAccepted() && child2);
+ QVERIFY(QApplication::sendEvent(view.viewport(), &touchBeginEvent));
+ QVERIFY(touchBeginEvent.isAccepted());
+ QVERIFY(child2);
touchUpdateEvent.ignore();
- res = QApplication::sendEvent(view.viewport(), &touchUpdateEvent);
- QVERIFY(res && !touchUpdateEvent.isAccepted() && !child2);
+ QVERIFY(QApplication::sendEvent(view.viewport(), &touchUpdateEvent));
+ QVERIFY(!touchUpdateEvent.isAccepted());
+ QVERIFY(!child2);
touchEndEvent.ignore();
- res = QApplication::sendEvent(view.viewport(), &touchEndEvent);
- QVERIFY(res && !touchUpdateEvent.isAccepted() && !child2);
+ QVERIFY(QApplication::sendEvent(view.viewport(), &touchEndEvent));
+ QVERIFY(!touchUpdateEvent.isAccepted());
+ QVERIFY(!child2);
child3->weakpointer = &child3;
- res = QApplication::sendEvent(view.viewport(), &touchBeginEvent);
- QVERIFY(res && touchBeginEvent.isAccepted() && child3);
- res = QApplication::sendEvent(view.viewport(), &touchUpdateEvent);
- QVERIFY(res && !touchUpdateEvent.isAccepted() && child3);
- res = QApplication::sendEvent(view.viewport(), &touchEndEvent);
- QVERIFY(res && !touchEndEvent.isAccepted() && !child3);
-
- delete root;
+ QVERIFY(QApplication::sendEvent(view.viewport(), &touchBeginEvent));
+ QVERIFY(touchBeginEvent.isAccepted());
+ QVERIFY(child3);
+ QVERIFY(QApplication::sendEvent(view.viewport(), &touchUpdateEvent));
+ QVERIFY(!touchUpdateEvent.isAccepted());
+ QVERIFY(child3);
+ QVERIFY(QApplication::sendEvent(view.viewport(), &touchEndEvent));
+ QVERIFY(!touchEndEvent.isAccepted());
+ QVERIFY(!child3);
}
}
void tst_QTouchEvent::deleteInRawEventTranslation()
{
- if (qApp->platformName().toLower() == QLatin1String("wayland"))
+ if (!QGuiApplication::platformName().compare(QLatin1String("wayland"), Qt::CaseInsensitive))
QSKIP("Wayland: This fails. Figure out why.");
tst_QTouchEventWidget touchWidget;
+ touchWidget.setWindowTitle(QTest::currentTestFunction());
touchWidget.setAttribute(Qt::WA_AcceptTouchEvents);
touchWidget.setGeometry(100, 100, 300, 300);
- tst_QTouchEventWidget *leftWidget = new tst_QTouchEventWidget;
- leftWidget->setParent(&touchWidget);
+ QPointer<tst_QTouchEventWidget> leftWidget = new tst_QTouchEventWidget(&touchWidget);
leftWidget->setAttribute(Qt::WA_AcceptTouchEvents);
leftWidget->setGeometry(0, 100, 100, 100);
leftWidget->deleteInTouchBegin = true;
- leftWidget->show();
- tst_QTouchEventWidget *centerWidget = new tst_QTouchEventWidget;
- centerWidget->setParent(&touchWidget);
+ QPointer<tst_QTouchEventWidget> centerWidget = new tst_QTouchEventWidget(&touchWidget);
centerWidget->setAttribute(Qt::WA_AcceptTouchEvents);
centerWidget->setGeometry(100, 100, 100, 100);
centerWidget->deleteInTouchUpdate = true;
- centerWidget->show();
- tst_QTouchEventWidget *rightWidget = new tst_QTouchEventWidget;
- rightWidget->setParent(&touchWidget);
+ QPointer<tst_QTouchEventWidget> rightWidget = new tst_QTouchEventWidget(&touchWidget);
rightWidget->setAttribute(Qt::WA_AcceptTouchEvents);
rightWidget->setGeometry(200, 100, 100, 100);
rightWidget->deleteInTouchEnd = true;
- rightWidget->show();
+
+ touchWidget.show();
+ QVERIFY(QTest::qWaitForWindowExposed(&touchWidget));
QPointF leftPos = leftWidget->rect().center();
QPointF centerPos = centerWidget->rect().center();
@@ -1374,9 +1365,7 @@ void tst_QTouchEvent::deleteInRawEventTranslation()
QPointF leftScreenPos = leftWidget->mapToGlobal(leftPos.toPoint());
QPointF centerScreenPos = centerWidget->mapToGlobal(centerPos.toPoint());
QPointF rightScreenPos = rightWidget->mapToGlobal(rightPos.toPoint());
- QRectF screenGeometry = qApp->desktop()->screenGeometry(&touchWidget);
-
- QPointer<QWidget> pl = leftWidget, pc = centerWidget, pr = rightWidget;
+ QRectF screenGeometry = QApplication::desktop()->screenGeometry(&touchWidget);
QList<QTouchEvent::TouchPoint> rawTouchPoints;
rawTouchPoints.append(QTouchEvent::TouchPoint(0));
@@ -1398,7 +1387,9 @@ void tst_QTouchEvent::deleteInRawEventTranslation()
touchScreenDevice,
touchPointList(rawTouchPoints));
QCoreApplication::processEvents();
- QVERIFY(pl.isNull() && !pc.isNull() && !pr.isNull());
+ QVERIFY(leftWidget.isNull());
+ QVERIFY(!centerWidget.isNull());
+ QVERIFY(!rightWidget.isNull());
// generate update events on all widget, the center widget should die
rawTouchPoints[0].setState(Qt::TouchPointMoved);
@@ -1455,14 +1446,13 @@ void tst_QTouchEvent::touchBeginWithGraphicsWidget()
{
QGraphicsScene scene;
QGraphicsView view(&scene);
- tst_QTouchEventGraphicsItem *root;
- root = new tst_QTouchEventGraphicsItem;
+ QScopedPointer<tst_QTouchEventGraphicsItem> root(new tst_QTouchEventGraphicsItem);
root->setAcceptTouchEvents(true);
- scene.addItem(root);
+ scene.addItem(root.data());
- QGraphicsWidget *glassWidget = new QGraphicsWidget;
+ QScopedPointer<QGraphicsWidget> glassWidget(new QGraphicsWidget);
glassWidget->setMinimumSize(100, 100);
- scene.addItem(glassWidget);
+ scene.addItem(glassWidget.data());
view.resize(200, 200);
view.show();
@@ -1478,7 +1468,7 @@ void tst_QTouchEvent::touchBeginWithGraphicsWidget()
.release(0, view.mapFromScene(root->mapToScene(3,3)), view.viewport())
.release(1, view.mapFromScene(root->mapToScene(6,6)), view.viewport());
- QCOMPARE(root->touchBeginCounter, 1);
+ QTRY_COMPARE(root->touchBeginCounter, 1);
QCOMPARE(root->touchUpdateCounter, 1);
QCOMPARE(root->touchEndCounter, 1);
QCOMPARE(root->touchUpdatePoints.size(), 2);
@@ -1498,17 +1488,13 @@ void tst_QTouchEvent::touchBeginWithGraphicsWidget()
QCOMPARE(root->touchBeginCounter, 0);
QCOMPARE(root->touchUpdateCounter, 0);
QCOMPARE(root->touchEndCounter, 0);
-
-
- delete root;
- delete glassWidget;
}
class WindowTouchEventFilter : public QObject
{
Q_OBJECT
public:
- bool eventFilter(QObject *obj, QEvent *event);
+ bool eventFilter(QObject *obj, QEvent *event) Q_DECL_OVERRIDE;
struct TouchInfo {
QList<QTouchEvent::TouchPoint> points;
QEvent::Type lastSeenType;
@@ -1537,18 +1523,18 @@ void tst_QTouchEvent::testQGuiAppDelivery()
device->setType(QTouchDevice::TouchScreen);
QWindowSystemInterface::registerTouchDevice(device);
- QWindow *w = new QWindow;
- w->setGeometry(100, 100, 100, 100);
- w->show();
- QVERIFY(QTest::qWaitForWindowExposed(w));
+ QWindow w;
+ w.setGeometry(100, 100, 100, 100);
+ w.show();
+ QVERIFY(QTest::qWaitForWindowExposed(&w));
WindowTouchEventFilter filter;
- w->installEventFilter(&filter);
+ w.installEventFilter(&filter);
QList<QWindowSystemInterface::TouchPoint> points;
// Pass empty list, should be ignored.
- QWindowSystemInterface::handleTouchEvent(w, 0, points);
+ QWindowSystemInterface::handleTouchEvent(&w, 0, points);
QCoreApplication::processEvents();
QCOMPARE(filter.d.isEmpty(), true);
@@ -1559,12 +1545,12 @@ void tst_QTouchEvent::testQGuiAppDelivery()
points.append(tp);
// Pass 0 as device, should be ignored.
- QWindowSystemInterface::handleTouchEvent(w, 0, points);
+ QWindowSystemInterface::handleTouchEvent(&w, 0, points);
QCoreApplication::processEvents();
QCOMPARE(filter.d.isEmpty(), true);
// Now the real thing.
- QWindowSystemInterface::handleTouchEvent(w, device, points); // TouchBegin
+ QWindowSystemInterface::handleTouchEvent(&w, device, points); // TouchBegin
QCoreApplication::processEvents();
QCOMPARE(filter.d.count(), 1);
QCOMPARE(filter.d.contains(device), true);
@@ -1572,7 +1558,7 @@ void tst_QTouchEvent::testQGuiAppDelivery()
QCOMPARE(filter.d.value(device).lastSeenType, QEvent::TouchBegin);
points[0].state = Qt::TouchPointMoved;
- QWindowSystemInterface::handleTouchEvent(w, device, points); // TouchUpdate
+ QWindowSystemInterface::handleTouchEvent(&w, device, points); // TouchUpdate
QCoreApplication::processEvents();
QCOMPARE(filter.d.count(), 1);
QCOMPARE(filter.d.contains(device), true);
@@ -1580,7 +1566,7 @@ void tst_QTouchEvent::testQGuiAppDelivery()
QCOMPARE(filter.d.value(device).lastSeenType, QEvent::TouchUpdate);
points[0].state = Qt::TouchPointReleased;
- QWindowSystemInterface::handleTouchEvent(w, device, points); // TouchEnd
+ QWindowSystemInterface::handleTouchEvent(&w, device, points); // TouchEnd
QCoreApplication::processEvents();
QCOMPARE(filter.d.count(), 1);
QCOMPARE(filter.d.contains(device), true);
@@ -1597,13 +1583,13 @@ void tst_QTouchEvent::testMultiDevice()
deviceTwo->setType(QTouchDevice::TouchScreen);
QWindowSystemInterface::registerTouchDevice(deviceTwo);
- QWindow *w = new QWindow;
- w->setGeometry(100, 100, 100, 100);
- w->show();
- QVERIFY(QTest::qWaitForWindowExposed(w));
+ QWindow w;
+ w.setGeometry(100, 100, 100, 100);
+ w.show();
+ QVERIFY(QTest::qWaitForWindowExposed(&w));
WindowTouchEventFilter filter;
- w->installEventFilter(&filter);
+ w.installEventFilter(&filter);
QList<QWindowSystemInterface::TouchPoint> pointsOne, pointsTwo;
@@ -1620,8 +1606,8 @@ void tst_QTouchEvent::testMultiDevice()
tp.area = QRectF(140, 140, 20, 20);
pointsTwo.append(tp);
- QWindowSystemInterface::handleTouchEvent(w, deviceOne, pointsOne);
- QWindowSystemInterface::handleTouchEvent(w, deviceTwo, pointsTwo);
+ QWindowSystemInterface::handleTouchEvent(&w, deviceOne, pointsOne);
+ QWindowSystemInterface::handleTouchEvent(&w, deviceTwo, pointsTwo);
QCoreApplication::processEvents();
QCOMPARE(filter.d.contains(deviceOne), true);