summaryrefslogtreecommitdiffstats
path: root/tests/auto/other/gestures/tst_gestures.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/other/gestures/tst_gestures.cpp')
-rw-r--r--tests/auto/other/gestures/tst_gestures.cpp248
1 files changed, 141 insertions, 107 deletions
diff --git a/tests/auto/other/gestures/tst_gestures.cpp b/tests/auto/other/gestures/tst_gestures.cpp
index 48cd355554..a413268321 100644
--- a/tests/auto/other/gestures/tst_gestures.cpp
+++ b/tests/auto/other/gestures/tst_gestures.cpp
@@ -1,36 +1,11 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include <QTest>
#include <QtTest/qtesttouch.h>
#include <qevent.h>
+#include <QSet>
#include <qpointingdevice.h>
#include <qwidget.h>
#include <qlayout.h>
@@ -233,7 +208,7 @@ protected:
QGestureEvent *e = static_cast<QGestureEvent*>(event);
++gestureEventsReceived;
eventsPtr = &events;
- foreach(Qt::GestureType type, ignoredGestures)
+ for (Qt::GestureType type : std::as_const(ignoredGestures))
e->ignore(e->gesture(type));
} else if (event->type() == QEvent::GestureOverride) {
++gestureOverrideEventsReceived;
@@ -243,8 +218,8 @@ protected:
}
if (eventsPtr) {
QGestureEvent *e = static_cast<QGestureEvent*>(event);
- QList<QGesture*> gestures = e->gestures();
- foreach(QGesture *g, gestures) {
+ const QList<QGesture*> gestures = e->gestures();
+ for (QGesture *g : gestures) {
eventsPtr->all << g->gestureType();
switch(g->state()) {
case Qt::GestureStarted:
@@ -306,6 +281,10 @@ Q_OBJECT
private slots:
void initTestCase();
void cleanupTestCase();
+
+ void init();
+ void cleanup();
+
void customGesture();
void autoCancelingGestures();
void gestureOverChild();
@@ -342,35 +321,60 @@ private slots:
void testQGestureRecognizerCleanup();
void testReuseCanceledGestures();
void bug_13501_gesture_not_accepted();
+private:
+ QPoint m_availableTopLeft;
};
void tst_Gestures::initTestCase()
{
+ const QScreen *screen = QGuiApplication::primaryScreen();
+ m_availableTopLeft = screen->availableGeometry().topLeft();
+}
+
+void tst_Gestures::cleanupTestCase()
+{
+}
+
+void tst_Gestures::init()
+{
CustomGesture::GestureType = QGestureRecognizer::registerRecognizer(new CustomGestureRecognizer);
QVERIFY(CustomGesture::GestureType != Qt::GestureType(0));
QVERIFY(CustomGesture::GestureType != Qt::CustomGesture);
}
-void tst_Gestures::cleanupTestCase()
+void tst_Gestures::cleanup()
{
QGestureRecognizer::unregisterRecognizer(CustomGesture::GestureType);
}
+static QtMessageHandler originalMessageHandler = nullptr;
+static bool skipCustomGesture = false;
+static void messageHandler(QtMsgType type, const QMessageLogContext &context, const QString &text)
+{
+ if (type == QtMsgType::QtWarningMsg && text == "QGestureManager::deliverEvent: could not find the target for gesture")
+ skipCustomGesture = true;
+ originalMessageHandler(type, context, text);
+}
+
void tst_Gestures::customGesture()
{
+ originalMessageHandler = qInstallMessageHandler(messageHandler);
+ auto guard = qScopeGuard([](){ qInstallMessageHandler(originalMessageHandler); });
GestureWidget widget;
widget.grabGesture(CustomGesture::GestureType, Qt::DontStartGestureOnChildren);
widget.show();
- QVERIFY(QTest::qWaitForWindowExposed(&widget));
+ QVERIFY(QTest::qWaitForWindowActive(&widget));
CustomEvent event;
event.hotSpot = widget.mapToGlobal(QPoint(5,5));
event.hasHotSpot = true;
sendCustomGesture(&event, &widget);
+ if (skipCustomGesture)
+ QSKIP("QApplication unable to access test widget.");
static const int TotalGestureEventsCount = CustomGesture::SerialFinishedThreshold - CustomGesture::SerialStartedThreshold + 1;
static const int TotalCustomEventsCount = CustomGesture::SerialFinishedThreshold - CustomGesture::SerialMaybeThreshold + 1;
- QCOMPARE(widget.customEventsReceived, TotalCustomEventsCount);
+ QTRY_COMPARE(widget.customEventsReceived, TotalCustomEventsCount);
QCOMPARE(widget.gestureEventsReceived, TotalGestureEventsCount);
QCOMPARE(widget.gestureOverrideEventsReceived, 0);
QCOMPARE(widget.events.all.size(), TotalGestureEventsCount);
@@ -430,7 +434,7 @@ void tst_Gestures::gestureOverChild()
static const int TotalGestureEventsCount = CustomGesture::SerialFinishedThreshold - CustomGesture::SerialStartedThreshold + 1;
static const int TotalCustomEventsCount = CustomGesture::SerialFinishedThreshold - CustomGesture::SerialMaybeThreshold + 1;
- QCOMPARE(child->customEventsReceived, TotalCustomEventsCount);
+ QTRY_COMPARE(child->customEventsReceived, TotalCustomEventsCount);
QCOMPARE(widget.customEventsReceived, 0);
QCOMPARE(child->gestureEventsReceived, 0);
QCOMPARE(child->gestureOverrideEventsReceived, 0);
@@ -445,7 +449,7 @@ void tst_Gestures::gestureOverChild()
sendCustomGesture(&event, child);
- QCOMPARE(child->customEventsReceived, TotalCustomEventsCount);
+ QTRY_COMPARE(child->customEventsReceived, TotalCustomEventsCount);
QCOMPARE(widget.customEventsReceived, 0);
QCOMPARE(child->gestureEventsReceived, 0);
@@ -477,7 +481,7 @@ void tst_Gestures::multipleWidgetOnlyGestureInTree()
CustomEvent event;
sendCustomGesture(&event, child);
- QCOMPARE(child->customEventsReceived, TotalCustomEventsCount);
+ QTRY_COMPARE(child->customEventsReceived, TotalCustomEventsCount);
QCOMPARE(parent.customEventsReceived, 0);
QCOMPARE(child->gestureEventsReceived, TotalGestureEventsCount);
QCOMPARE(child->gestureOverrideEventsReceived, 0);
@@ -490,8 +494,8 @@ void tst_Gestures::multipleWidgetOnlyGestureInTree()
// same for the parent widget
sendCustomGesture(&event, &parent);
- QCOMPARE(child->customEventsReceived, 0);
QCOMPARE(parent.customEventsReceived, TotalCustomEventsCount);
+ QCOMPARE(child->customEventsReceived, 0);
QCOMPARE(child->gestureEventsReceived, 0);
QCOMPARE(child->gestureOverrideEventsReceived, 0);
QCOMPARE(parent.gestureEventsReceived, TotalGestureEventsCount);
@@ -518,7 +522,7 @@ void tst_Gestures::conflictingGestures()
CustomEvent event;
sendCustomGesture(&event, child);
- QCOMPARE(child->gestureOverrideEventsReceived, 1);
+ QTRY_COMPARE(child->gestureOverrideEventsReceived, 1);
QCOMPARE(child->gestureEventsReceived, TotalGestureEventsCount);
QCOMPARE(parent.gestureOverrideEventsReceived, 0);
QCOMPARE(parent.gestureEventsReceived, 0);
@@ -586,8 +590,8 @@ void tst_Gestures::conflictingGestures()
// sending events to the child and making sure there is no conflict
sendCustomGesture(&event, child);
+ QTRY_COMPARE(child->gestureEventsReceived, TotalGestureEventsCount);
QCOMPARE(child->gestureOverrideEventsReceived, 1);
- QCOMPARE(child->gestureEventsReceived, TotalGestureEventsCount);
QCOMPARE(parent.gestureOverrideEventsReceived, 1);
QCOMPARE(parent.gestureEventsReceived, TotalGestureEventsCount);
@@ -595,6 +599,9 @@ void tst_Gestures::conflictingGestures()
child->reset();
Qt::GestureType ContinuousGesture = QGestureRecognizer::registerRecognizer(new CustomContinuousGestureRecognizer);
+ auto unregisterRecognizer = qScopeGuard([ContinuousGesture]{
+ QGestureRecognizer::unregisterRecognizer(ContinuousGesture);
+ });
static const int ContinuousGestureEventsCount = CustomGesture::SerialFinishedThreshold - CustomGesture::SerialMaybeThreshold + 1;
child->grabGesture(ContinuousGesture);
// child accepts override. And it also receives another custom gesture.
@@ -602,13 +609,11 @@ void tst_Gestures::conflictingGestures()
child->acceptGestureOverride = true;
sendCustomGesture(&event, child);
+ QTRY_VERIFY(child->gestureEventsReceived > TotalGestureEventsCount);
QCOMPARE(child->gestureOverrideEventsReceived, 1);
- QVERIFY(child->gestureEventsReceived > TotalGestureEventsCount);
- QCOMPARE(child->events.all.count(), TotalGestureEventsCount + ContinuousGestureEventsCount);
+ QCOMPARE(child->events.all.size(), TotalGestureEventsCount + ContinuousGestureEventsCount);
QCOMPARE(parent.gestureOverrideEventsReceived, 0);
QCOMPARE(parent.gestureEventsReceived, 0);
-
- QGestureRecognizer::unregisterRecognizer(ContinuousGesture);
}
void tst_Gestures::finishedWithoutStarted()
@@ -621,7 +626,7 @@ void tst_Gestures::finishedWithoutStarted()
ev.serial = CustomGesture::SerialFinishedThreshold;
QApplication::sendEvent(&widget, &ev);
- QCOMPARE(widget.customEventsReceived, 1);
+ QTRY_COMPARE(widget.customEventsReceived, 1);
QCOMPARE(widget.gestureEventsReceived, 2);
QCOMPARE(widget.gestureOverrideEventsReceived, 0);
QCOMPARE(widget.events.all.size(), 2);
@@ -643,7 +648,7 @@ void tst_Gestures::unknownGesture()
static const int TotalGestureEventsCount = CustomGesture::SerialFinishedThreshold - CustomGesture::SerialStartedThreshold + 1;
- QCOMPARE(widget.gestureEventsReceived, TotalGestureEventsCount);
+ QTRY_COMPARE(widget.gestureEventsReceived, TotalGestureEventsCount);
}
static const QColor InstanceColors[] = {
@@ -737,9 +742,10 @@ public:
++gestureEventsReceived;
eventsPtr = &events;
QGestureEvent *e = static_cast<QGestureEvent *>(event);
- foreach(Qt::GestureType type, ignoredGestures)
+ for (Qt::GestureType type : std::as_const(ignoredGestures))
e->ignore(e->gesture(type));
- foreach(QGesture *g, e->gestures()) {
+ const auto gestures = e->gestures();
+ for (QGesture *g : gestures) {
switch (g->state()) {
case Qt::GestureStarted:
if (ignoredStartedGestures.contains(g->gestureType()))
@@ -765,8 +771,8 @@ public:
}
if (eventsPtr) {
QGestureEvent *e = static_cast<QGestureEvent*>(event);
- QList<QGesture*> gestures = e->gestures();
- foreach(QGesture *g, gestures) {
+ const QList<QGesture*> gestures = e->gestures();
+ for (QGesture *g : gestures) {
eventsPtr->all << g->gestureType();
switch(g->state()) {
case Qt::GestureStarted:
@@ -824,6 +830,7 @@ void tst_Gestures::graphicsItemGesture()
QGraphicsScene scene;
QGraphicsView view(&scene);
view.setWindowFlags(Qt::X11BypassWindowManagerHint);
+ view.move(m_availableTopLeft);
GestureItem *item = new GestureItem("item");
scene.addItem(item);
@@ -846,7 +853,7 @@ void tst_Gestures::graphicsItemGesture()
QTest::ignoreMessage(QtWarningMsg, "QGestureManager::deliverEvent: could not find the target for gesture");
sendCustomGesture(&event, item, &scene);
- QCOMPARE(item->customEventsReceived, TotalCustomEventsCount);
+ QTRY_COMPARE(item->customEventsReceived, TotalCustomEventsCount);
QCOMPARE(item->gestureEventsReceived, 0);
QCOMPARE(item->gestureOverrideEventsReceived, 0);
@@ -886,6 +893,7 @@ void tst_Gestures::graphicsView()
QGraphicsScene scene;
QGraphicsView view(&scene);
view.setWindowFlags(Qt::X11BypassWindowManagerHint);
+ view.move(m_availableTopLeft);
GestureItem *item = new GestureItem("item");
scene.addItem(item);
@@ -906,7 +914,7 @@ void tst_Gestures::graphicsView()
event.hasHotSpot = true;
sendCustomGesture(&event, item, &scene);
- QCOMPARE(item->customEventsReceived, TotalCustomEventsCount);
+ QTRY_COMPARE(item->customEventsReceived, TotalCustomEventsCount);
QCOMPARE(item->gestureEventsReceived, TotalGestureEventsCount);
QCOMPARE(item->gestureOverrideEventsReceived, 0);
@@ -941,8 +949,8 @@ void tst_Gestures::graphicsView()
item->grabGesture(CustomGesture::GestureType);
sendCustomGesture(&event, item, &newScene);
+ QTRY_COMPARE(item->gestureEventsReceived, TotalGestureEventsCount);
QCOMPARE(item->customEventsReceived, TotalCustomEventsCount);
- QCOMPARE(item->gestureEventsReceived, TotalGestureEventsCount);
QCOMPARE(item->gestureOverrideEventsReceived, 0);
}
@@ -951,6 +959,7 @@ void tst_Gestures::graphicsItemTreeGesture()
QGraphicsScene scene;
QGraphicsView view(&scene);
view.setWindowFlags(Qt::X11BypassWindowManagerHint);
+ view.move(m_availableTopLeft);
GestureItem *item1 = new GestureItem("item1");
item1->setPos(100, 100);
@@ -981,12 +990,12 @@ void tst_Gestures::graphicsItemTreeGesture()
item1->ignoredGestures << CustomGesture::GestureType;
sendCustomGesture(&event, item1_child1, &scene);
+ QTRY_COMPARE(item1->gestureEventsReceived, TotalGestureEventsCount);
QCOMPARE(item1_child1->gestureOverrideEventsReceived, 0);
QCOMPARE(item1_child1->gestureEventsReceived, 0);
QCOMPARE(item1_child2->gestureEventsReceived, 0);
QCOMPARE(item1_child2->gestureOverrideEventsReceived, 0);
QCOMPARE(item1->gestureOverrideEventsReceived, 0);
- QCOMPARE(item1->gestureEventsReceived, TotalGestureEventsCount);
item1->reset(); item1_child1->reset(); item1_child2->reset();
@@ -995,7 +1004,7 @@ void tst_Gestures::graphicsItemTreeGesture()
item1->ignoredGestures << CustomGesture::GestureType;
item1_child1->ignoredGestures << CustomGesture::GestureType;
sendCustomGesture(&event, item1_child1, &scene);
- QCOMPARE(item1_child1->gestureOverrideEventsReceived, 1);
+ QTRY_COMPARE(item1_child1->gestureOverrideEventsReceived, 1);
QCOMPARE(item1_child1->gestureEventsReceived, TotalGestureEventsCount);
QCOMPARE(item1_child2->gestureEventsReceived, 0);
QCOMPARE(item1_child2->gestureOverrideEventsReceived, 0);
@@ -1008,6 +1017,7 @@ void tst_Gestures::explicitGraphicsObjectTarget()
QGraphicsScene scene;
QGraphicsView view(&scene);
view.setWindowFlags(Qt::X11BypassWindowManagerHint);
+ view.move(m_availableTopLeft);
GestureItem *item1 = new GestureItem("item1");
scene.addItem(item1);
@@ -1041,9 +1051,9 @@ void tst_Gestures::explicitGraphicsObjectTarget()
sendCustomGesture(&event, item1, &scene);
- QCOMPARE(item1->gestureEventsReceived, 0);
+ QTRY_COMPARE(item2_child1->gestureEventsReceived, TotalGestureEventsCount);
QCOMPARE(item1->gestureOverrideEventsReceived, 1);
- QCOMPARE(item2_child1->gestureEventsReceived, TotalGestureEventsCount);
+ QCOMPARE(item1->gestureEventsReceived, 0);
QCOMPARE(item2_child1->gestureOverrideEventsReceived, 1);
QCOMPARE(item2_child1->events.all.size(), TotalGestureEventsCount);
for(int i = 0; i < item2_child1->events.all.size(); ++i)
@@ -1084,7 +1094,7 @@ void tst_Gestures::gestureOverChildGraphicsItem()
item2_child1->setPos(0, 0);
view.show();
- QVERIFY(QTest::qWaitForWindowExposed(&view));
+ QTRY_VERIFY(QTest::qWaitForWindowExposed(&view));
view.ensureVisible(scene.sceneRect());
item1->grabGesture(CustomGesture::GestureType);
@@ -1097,7 +1107,7 @@ void tst_Gestures::gestureOverChildGraphicsItem()
event.hasHotSpot = true;
sendCustomGesture(&event, item0, &scene);
- QCOMPARE(item0->customEventsReceived, TotalCustomEventsCount);
+ QTRY_COMPARE(item0->customEventsReceived, TotalCustomEventsCount);
QCOMPARE(item2_child1->gestureEventsReceived, 0);
QCOMPARE(item2_child1->gestureOverrideEventsReceived, 0);
QCOMPARE(item2->gestureEventsReceived, 0);
@@ -1113,11 +1123,11 @@ void tst_Gestures::gestureOverChildGraphicsItem()
event.hasHotSpot = true;
sendCustomGesture(&event, item0, &scene);
- QCOMPARE(item2_child1->gestureEventsReceived, 0);
- QCOMPARE(item2_child1->gestureOverrideEventsReceived, 0);
+ QTRY_COMPARE(item1->gestureEventsReceived, TotalGestureEventsCount);
QCOMPARE(item2->gestureEventsReceived, 1);
QCOMPARE(item2->gestureOverrideEventsReceived, 1);
- QCOMPARE(item1->gestureEventsReceived, TotalGestureEventsCount);
+ QCOMPARE(item2_child1->gestureEventsReceived, 0);
+ QCOMPARE(item2_child1->gestureOverrideEventsReceived, 0);
QCOMPARE(item1->gestureOverrideEventsReceived, 1);
item0->reset(); item1->reset(); item2->reset(); item2_child1->reset();
@@ -1129,9 +1139,9 @@ void tst_Gestures::gestureOverChildGraphicsItem()
event.hasHotSpot = true;
sendCustomGesture(&event, item0, &scene);
+ QTRY_COMPARE(item2->gestureEventsReceived, TotalGestureEventsCount);
QCOMPARE(item2_child1->gestureEventsReceived, 0);
QCOMPARE(item2_child1->gestureOverrideEventsReceived, 0);
- QCOMPARE(item2->gestureEventsReceived, TotalGestureEventsCount);
QCOMPARE(item2->gestureOverrideEventsReceived, 1);
QCOMPARE(item1->gestureEventsReceived, 1);
QCOMPARE(item1->gestureOverrideEventsReceived, 1);
@@ -1146,9 +1156,9 @@ void tst_Gestures::gestureOverChildGraphicsItem()
event.hasHotSpot = true;
sendCustomGesture(&event, item0, &scene);
+ QTRY_COMPARE(item2->gestureEventsReceived, TotalGestureEventsCount);
QCOMPARE(item2_child1->gestureEventsReceived, 0);
QCOMPARE(item2_child1->gestureOverrideEventsReceived, 0);
- QCOMPARE(item2->gestureEventsReceived, TotalGestureEventsCount);
QCOMPARE(item2->gestureOverrideEventsReceived, 1);
QCOMPARE(item1->gestureEventsReceived, TotalGestureEventsCount);
QCOMPARE(item1->gestureOverrideEventsReceived, 1);
@@ -1162,6 +1172,9 @@ void tst_Gestures::twoGesturesOnDifferentLevel()
l->addWidget(child);
Qt::GestureType SecondGesture = QGestureRecognizer::registerRecognizer(new CustomGestureRecognizer);
+ auto unregisterRecognizer = qScopeGuard([SecondGesture]{
+ QGestureRecognizer::unregisterRecognizer(SecondGesture);
+ });
parent.grabGesture(CustomGesture::GestureType);
child->grabGesture(SecondGesture);
@@ -1176,20 +1189,18 @@ void tst_Gestures::twoGesturesOnDifferentLevel()
static const int TotalGestureEventsCount = CustomGesture::SerialFinishedThreshold - CustomGesture::SerialStartedThreshold + 1;
static const int TotalCustomEventsCount = CustomGesture::SerialFinishedThreshold - CustomGesture::SerialMaybeThreshold + 1;
- QCOMPARE(child->customEventsReceived, TotalCustomEventsCount);
+ QTRY_COMPARE(child->customEventsReceived, TotalCustomEventsCount);
QCOMPARE(child->gestureEventsReceived, TotalGestureEventsCount);
QCOMPARE(child->gestureOverrideEventsReceived, 0);
QCOMPARE(child->events.all.size(), TotalGestureEventsCount);
for(int i = 0; i < child->events.all.size(); ++i)
QCOMPARE(child->events.all.at(i), SecondGesture);
+ QCOMPARE(parent.events.all.size(), TotalGestureEventsCount);
QCOMPARE(parent.gestureEventsReceived, TotalGestureEventsCount);
QCOMPARE(parent.gestureOverrideEventsReceived, 0);
- QCOMPARE(parent.events.all.size(), TotalGestureEventsCount);
for(int i = 0; i < child->events.all.size(); ++i)
QCOMPARE(parent.events.all.at(i), CustomGesture::GestureType);
-
- QGestureRecognizer::unregisterRecognizer(SecondGesture);
}
void tst_Gestures::multipleGesturesInTree()
@@ -1203,6 +1214,10 @@ void tst_Gestures::multipleGesturesInTree()
Qt::GestureType FirstGesture = CustomGesture::GestureType;
Qt::GestureType SecondGesture = QGestureRecognizer::registerRecognizer(new CustomGestureRecognizer);
Qt::GestureType ThirdGesture = QGestureRecognizer::registerRecognizer(new CustomGestureRecognizer);
+ auto unregisterRecognizer = qScopeGuard([SecondGesture, ThirdGesture]{
+ QGestureRecognizer::unregisterRecognizer(SecondGesture);
+ QGestureRecognizer::unregisterRecognizer(ThirdGesture);
+ });
Qt::GestureFlags flags = Qt::ReceivePartialGestures;
A->grabGesture(FirstGesture, flags); // A [1 3]
@@ -1227,7 +1242,7 @@ void tst_Gestures::multipleGesturesInTree()
static const int TotalGestureEventsCount = CustomGesture::SerialFinishedThreshold - CustomGesture::SerialStartedThreshold + 1;
// gesture override events
- QCOMPARE(D->overrideEvents.all.count(FirstGesture), 1);
+ QTRY_COMPARE(D->overrideEvents.all.count(FirstGesture), 1);
QCOMPARE(D->overrideEvents.all.count(SecondGesture), 0);
QCOMPARE(D->overrideEvents.all.count(ThirdGesture), 1);
@@ -1259,9 +1274,6 @@ void tst_Gestures::multipleGesturesInTree()
QCOMPARE(A->events.all.count(FirstGesture), TotalGestureEventsCount);
QCOMPARE(A->events.all.count(SecondGesture), 0);
QCOMPARE(A->events.all.count(ThirdGesture), TotalGestureEventsCount);
-
- QGestureRecognizer::unregisterRecognizer(SecondGesture);
- QGestureRecognizer::unregisterRecognizer(ThirdGesture);
}
void tst_Gestures::multipleGesturesInComplexTree()
@@ -1279,6 +1291,14 @@ void tst_Gestures::multipleGesturesInComplexTree()
Qt::GestureType FifthGesture = QGestureRecognizer::registerRecognizer(new CustomGestureRecognizer);
Qt::GestureType SixthGesture = QGestureRecognizer::registerRecognizer(new CustomGestureRecognizer);
Qt::GestureType SeventhGesture = QGestureRecognizer::registerRecognizer(new CustomGestureRecognizer);
+ auto unregisterRecognizer = qScopeGuard([=]{
+ QGestureRecognizer::unregisterRecognizer(SecondGesture);
+ QGestureRecognizer::unregisterRecognizer(ThirdGesture);
+ QGestureRecognizer::unregisterRecognizer(FourthGesture);
+ QGestureRecognizer::unregisterRecognizer(FifthGesture);
+ QGestureRecognizer::unregisterRecognizer(SixthGesture);
+ QGestureRecognizer::unregisterRecognizer(SeventhGesture);
+ });
Qt::GestureFlags flags = Qt::ReceivePartialGestures;
A->grabGesture(FirstGesture, flags); // A [1,3,4]
@@ -1308,7 +1328,7 @@ void tst_Gestures::multipleGesturesInComplexTree()
static const int TotalGestureEventsCount = CustomGesture::SerialFinishedThreshold - CustomGesture::SerialStartedThreshold + 1;
// gesture override events
- QCOMPARE(D->overrideEvents.all.count(FirstGesture), 1);
+ QTRY_COMPARE(D->overrideEvents.all.count(FirstGesture), 1);
QCOMPARE(D->overrideEvents.all.count(SecondGesture), 0);
QCOMPARE(D->overrideEvents.all.count(ThirdGesture), 1);
@@ -1356,13 +1376,6 @@ void tst_Gestures::multipleGesturesInComplexTree()
QCOMPARE(A->events.all.count(FifthGesture), 0);
QCOMPARE(A->events.all.count(SixthGesture), 0);
QCOMPARE(A->events.all.count(SeventhGesture), 0);
-
- QGestureRecognizer::unregisterRecognizer(SecondGesture);
- QGestureRecognizer::unregisterRecognizer(ThirdGesture);
- QGestureRecognizer::unregisterRecognizer(FourthGesture);
- QGestureRecognizer::unregisterRecognizer(FifthGesture);
- QGestureRecognizer::unregisterRecognizer(SixthGesture);
- QGestureRecognizer::unregisterRecognizer(SeventhGesture);
}
void tst_Gestures::testMapToScene()
@@ -1425,13 +1438,13 @@ void tst_Gestures::ungrabGesture() // a method on QWidget
// sending an event will cause the QGesture objects to be instantiated for the widgets
sendCustomGesture(&event, b);
- QCOMPARE(a->gestures.count(), 1);
+ QTRY_COMPARE(a->gestures.size(), 1);
QPointer<QGesture> customGestureA;
customGestureA = *(a->gestures.begin());
QVERIFY(!customGestureA.isNull());
QCOMPARE(customGestureA->gestureType(), CustomGesture::GestureType);
- QCOMPARE(b->gestures.count(), 1);
+ QCOMPARE(b->gestures.size(), 1);
QPointer<QGesture> customGestureB;
customGestureB = *(b->gestures.begin());
QVERIFY(!customGestureB.isNull());
@@ -1442,7 +1455,7 @@ void tst_Gestures::ungrabGesture() // a method on QWidget
// sending an event will cause the QGesture objects to be instantiated for the widget
sendCustomGesture(&event, a);
- QCOMPARE(a->gestures.count(), 1);
+ QTRY_COMPARE(a->gestures.size(), 1);
customGestureA = *(a->gestures.begin());
QVERIFY(!customGestureA.isNull());
QCOMPARE(customGestureA->gestureType(), CustomGesture::GestureType);
@@ -1450,7 +1463,7 @@ void tst_Gestures::ungrabGesture() // a method on QWidget
a->ungrabGesture(CustomGesture::GestureType);
//We changed the deletion of Gestures to lazy during QT-4022, so we can't ensure the QGesture is deleted until now
- QVERIFY(!customGestureB.isNull());
+ QTRY_VERIFY(!customGestureB.isNull());
a->gestures.clear();
a->reset();
@@ -1487,7 +1500,7 @@ void tst_Gestures::autoCancelGestures()
{
if (event->type() == QEvent::Gesture) {
QGestureEvent *ge = static_cast<QGestureEvent*>(event);
- if (ge->gestures().count() != 1)
+ if (ge->gestures().size() != 1)
++badGestureEvents; // event should contain exactly one gesture
ge->gestures().first()->setGestureCancelPolicy(QGesture::CancelAllInContext);
}
@@ -1498,6 +1511,9 @@ void tst_Gestures::autoCancelGestures()
};
const Qt::GestureType secondGesture = QGestureRecognizer::registerRecognizer(new CustomGestureRecognizer);
+ auto unregisterRecognizer = qScopeGuard([secondGesture]{
+ QGestureRecognizer::unregisterRecognizer(secondGesture);
+ });
MockWidget parent("parent"); // this one sets the cancel policy to CancelAllInContext
parent.resize(300, 100);
@@ -1520,15 +1536,15 @@ void tst_Gestures::autoCancelGestures()
CustomEvent event;
event.serial = CustomGesture::SerialStartedThreshold;
QApplication::sendEvent(child, &event);
- QCOMPARE(child->events.all.count(), 2);
- QCOMPARE(child->events.started.count(), 1);
- QCOMPARE(child->events.canceled.count(), 1);
- QCOMPARE(parent.events.all.count(), 1);
+ QCOMPARE(child->events.all.size(), 2);
+ QCOMPARE(child->events.started.size(), 1);
+ QCOMPARE(child->events.canceled.size(), 1);
+ QCOMPARE(parent.events.all.size(), 1);
// clean up, make the parent gesture finish
event.serial = CustomGesture::SerialFinishedThreshold;
QApplication::sendEvent(child, &event);
- QCOMPARE(parent.events.all.count(), 2);
+ QCOMPARE(parent.events.all.size(), 2);
QCOMPARE(parent.badGestureEvents, 0);
}
@@ -1542,7 +1558,7 @@ void tst_Gestures::autoCancelGestures2()
{
if (event->type() == QEvent::Gesture) {
QGestureEvent *ge = static_cast<QGestureEvent*>(event);
- if (ge->gestures().count() != 1)
+ if (ge->gestures().size() != 1)
++badGestureEvents; // event should contain exactly one gesture
ge->gestures().first()->setGestureCancelPolicy(QGesture::CancelAllInContext);
}
@@ -1553,10 +1569,14 @@ void tst_Gestures::autoCancelGestures2()
};
const Qt::GestureType secondGesture = QGestureRecognizer ::registerRecognizer(new CustomGestureRecognizer);
+ auto unregisterRecognizer = qScopeGuard([secondGesture]{
+ QGestureRecognizer::unregisterRecognizer(secondGesture);
+ });
QGraphicsScene scene;
QGraphicsView view(&scene);
view.setWindowFlags(Qt::X11BypassWindowManagerHint);
+ view.move(m_availableTopLeft);
MockItem *parent = new MockItem("parent");
GestureItem *child = new GestureItem("child");
@@ -1576,15 +1596,15 @@ void tst_Gestures::autoCancelGestures2()
event.hasHotSpot = true;
event.hotSpot = mapToGlobal(QPointF(5, 5), child, &view);
scene.sendEvent(child, &event);
- QCOMPARE(parent->events.all.count(), 1);
- QCOMPARE(child->events.started.count(), 1);
- QCOMPARE(child->events.canceled.count(), 1);
- QCOMPARE(child->events.all.count(), 2);
+ QCOMPARE(parent->events.all.size(), 1);
+ QCOMPARE(child->events.started.size(), 1);
+ QCOMPARE(child->events.canceled.size(), 1);
+ QCOMPARE(child->events.all.size(), 2);
// clean up, make the parent gesture finish
event.serial = CustomGesture::SerialFinishedThreshold;
scene.sendEvent(child, &event);
- QCOMPARE(parent->events.all.count(), 2);
+ QCOMPARE(parent->events.all.size(), 2);
QCOMPARE(parent->badGestureEvents, 0);
}
@@ -1593,6 +1613,7 @@ void tst_Gestures::graphicsViewParentPropagation()
QGraphicsScene scene;
QGraphicsView view(&scene);
view.setWindowFlags(Qt::X11BypassWindowManagerHint);
+ view.move(m_availableTopLeft);
GestureItem *item0 = new GestureItem("item0");
scene.addItem(item0);
@@ -1638,7 +1659,7 @@ void tst_Gestures::graphicsViewParentPropagation()
event.hasHotSpot = true;
sendCustomGesture(&event, item0, &scene);
- QCOMPARE(item1_c1_c1->gestureEventsReceived, TotalGestureEventsCount);
+ QTRY_COMPARE(item1_c1_c1->gestureEventsReceived, TotalGestureEventsCount);
QCOMPARE(item1_c1_c1->gestureOverrideEventsReceived, 1);
QCOMPARE(item1_c1->gestureEventsReceived, TotalGestureEventsCount-1);
QCOMPARE(item1_c1->gestureOverrideEventsReceived, 1);
@@ -1653,6 +1674,7 @@ void tst_Gestures::panelPropagation()
QGraphicsScene scene;
QGraphicsView view(&scene);
view.setWindowFlags(Qt::X11BypassWindowManagerHint);
+ view.move(m_availableTopLeft);
GestureItem *item0 = new GestureItem("item0");
scene.addItem(item0);
@@ -1710,11 +1732,11 @@ void tst_Gestures::panelPropagation()
event.hasHotSpot = true;
sendCustomGesture(&event, item1, &scene);
+ QCOMPARE(item1->gestureEventsReceived, TotalGestureEventsCount);
QCOMPARE(item1_child1_child1->gestureEventsReceived, 0);
QCOMPARE(item1_child1_child1->gestureOverrideEventsReceived, 0);
QCOMPARE(item1_child1->gestureEventsReceived, 0);
QCOMPARE(item1_child1->gestureOverrideEventsReceived, 0);
- QCOMPARE(item1->gestureEventsReceived, TotalGestureEventsCount);
QCOMPARE(item1->gestureOverrideEventsReceived, 1);
QCOMPARE(item0->gestureEventsReceived, 0);
QCOMPARE(item0->gestureOverrideEventsReceived, 1);
@@ -1764,7 +1786,7 @@ void tst_Gestures::panelPropagation()
QCOMPARE(item1_child1_child1->gestureEventsReceived, 0);
QCOMPARE(item1_child1_child1->gestureOverrideEventsReceived, 0);
- QCOMPARE(item1_child1->gestureEventsReceived, TotalGestureEventsCount);
+ QTRY_COMPARE(item1_child1->gestureEventsReceived, TotalGestureEventsCount);
QCOMPARE(item1_child1->gestureOverrideEventsReceived, 0);
QCOMPARE(item1->gestureEventsReceived, 0);
QCOMPARE(item1->gestureOverrideEventsReceived, 0);
@@ -1777,6 +1799,7 @@ void tst_Gestures::panelStacksBehindParent()
QGraphicsScene scene;
QGraphicsView view(&scene);
view.setWindowFlags(Qt::X11BypassWindowManagerHint);
+ view.move(m_availableTopLeft);
GestureItem *item1 = new GestureItem("item1");
item1->grabGesture(CustomGesture::GestureType);
@@ -1956,7 +1979,7 @@ void tst_Gestures::viewportCoordinates()
event.hotSpot = mapToGlobal(item1->boundingRect().center(), item1, &view);
event.hasHotSpot = true;
sendCustomGesture(&event, item1, &scene);
- QVERIFY(item1->gestureEventsReceived != 0);
+ QTRY_VERIFY(item1->gestureEventsReceived != 0);
}
void tst_Gestures::partialGesturePropagation()
@@ -1964,6 +1987,7 @@ void tst_Gestures::partialGesturePropagation()
QGraphicsScene scene;
QGraphicsView view(&scene);
view.setWindowFlags(Qt::X11BypassWindowManagerHint);
+ view.move(m_availableTopLeft);
GestureItem *item1 = new GestureItem("item1");
item1->grabGesture(CustomGesture::GestureType);
@@ -1998,13 +2022,14 @@ void tst_Gestures::partialGesturePropagation()
static const int TotalGestureEventsCount = CustomGesture::SerialFinishedThreshold - CustomGesture::SerialStartedThreshold + 1;
+ QCOMPARE(item1->gestureEventsReceived, TotalGestureEventsCount);
+ QCOMPARE(item2->gestureEventsReceived, TotalGestureEventsCount-2); // except for started and finished
+
QCOMPARE(item1->gestureOverrideEventsReceived, 1);
QCOMPARE(item2->gestureOverrideEventsReceived, 1);
QCOMPARE(item3->gestureOverrideEventsReceived, 1);
QCOMPARE(item4->gestureOverrideEventsReceived, 1);
- QCOMPARE(item1->gestureEventsReceived, TotalGestureEventsCount);
- QCOMPARE(item2->gestureEventsReceived, TotalGestureEventsCount-2); // except for started and finished
QCOMPARE(item3->gestureEventsReceived, 0);
QCOMPARE(item4->gestureEventsReceived, 0);
}
@@ -2054,10 +2079,14 @@ void tst_Gestures::testQGestureRecognizerCleanup()
// Mimic QGestureManager: register both default and "platform" recognizers
// (this is done in windows when QT_NO_NATIVE_GESTURES is not defined)
PanRecognizer *def = new PanRecognizer(PanRecognizer::Default);
- QGestureRecognizer::registerRecognizer(def);
+ auto defRecognizer = QGestureRecognizer::registerRecognizer(def);
PanRecognizer *plt = new PanRecognizer(PanRecognizer::Platform);
- QGestureRecognizer::registerRecognizer(plt);
+ auto pltRecognizer = QGestureRecognizer::registerRecognizer(plt);
qDebug () << "register: default =" << def << "; platform =" << plt;
+ auto unregisterRecognizer = qScopeGuard([defRecognizer, pltRecognizer]{
+ QGestureRecognizer::unregisterRecognizer(defRecognizer);
+ QGestureRecognizer::unregisterRecognizer(pltRecognizer);
+ });
// ^-- Qt singleton QGManager initialization
@@ -2171,11 +2200,16 @@ void tst_Gestures::testReuseCanceledGestures()
new ReuseCanceledGesturesRecognizer(ReuseCanceledGesturesRecognizer::RmbAndCancelAllType));
Qt::GestureType tapGestureTypeId = QGestureRecognizer::registerRecognizer(
new ReuseCanceledGesturesRecognizer(ReuseCanceledGesturesRecognizer::LmbType));
+ auto unregisterRecognizer = qScopeGuard([=]{
+ QGestureRecognizer::unregisterRecognizer(cancellingGestureTypeId);
+ QGestureRecognizer::unregisterRecognizer(tapGestureTypeId);
+ });
QMainWindow mw;
mw.setWindowFlags(Qt::X11BypassWindowManagerHint);
QGraphicsView *gv = new QGraphicsView(&mw);
QGraphicsScene *scene = new QGraphicsScene;
+ mw.move(m_availableTopLeft);
gv->setScene(scene);
scene->setSceneRect(0,0,100,100);
@@ -2278,8 +2312,8 @@ void tst_Gestures::conflictingGesturesInGraphicsView()
event.hotSpot = mapToGlobal(item2->boundingRect().center(), item2, &view);
event.hasHotSpot = true;
sendCustomGesture(&event, item2, &scene);
+ QTRY_COMPARE(item2->gestureEventsReceived, TotalGestureEventsCount);
QCOMPARE(item2->gestureOverrideEventsReceived, 1);
- QCOMPARE(item2->gestureEventsReceived, TotalGestureEventsCount);
QCOMPARE(item1->gestureOverrideEventsReceived, 1);
QCOMPARE(item1->gestureEventsReceived, 0);
@@ -2291,8 +2325,8 @@ void tst_Gestures::conflictingGesturesInGraphicsView()
event.hotSpot = mapToGlobal(item2->boundingRect().center(), item2, &view);
event.hasHotSpot = true;
sendCustomGesture(&event, item2, &scene);
- QCOMPARE(item2->gestureOverrideEventsReceived, 1);
QCOMPARE(item2->gestureEventsReceived, TotalGestureEventsCount);
+ QCOMPARE(item2->gestureOverrideEventsReceived, 1);
QCOMPARE(item1->gestureOverrideEventsReceived, 0);
QCOMPARE(item1->gestureEventsReceived, 0);
@@ -2304,11 +2338,11 @@ void tst_Gestures::conflictingGesturesInGraphicsView()
event.hotSpot = mapToGlobal(item2->boundingRect().center(), item2, &view);
event.hasHotSpot = true;
sendCustomGesture(&event, item2, &scene);
+ QCOMPARE(item1->gestureEventsReceived, TotalGestureEventsCount);
QCOMPARE(item2->gestureOverrideEventsReceived, 1);
QCOMPARE(item2->gestureEventsReceived, 0);
QCOMPARE(item1->gestureOverrideEventsReceived, 1);
- QCOMPARE(item1->gestureEventsReceived, TotalGestureEventsCount);
}
class NoConsumeWidgetBug13501 :public QWidget