diff options
-rw-r--r-- | src/sensors/gestures/qsensorgesture.cpp | 25 | ||||
-rw-r--r-- | tests/auto/qsensorgestures/qsensorgestures.pro | 1 | ||||
-rw-r--r-- | tests/auto/qsensorgestures/tst_qsensorgesturetest.cpp | 29 |
3 files changed, 43 insertions, 12 deletions
diff --git a/src/sensors/gestures/qsensorgesture.cpp b/src/sensors/gestures/qsensorgesture.cpp index 228ee461..b5d7b7d6 100644 --- a/src/sensors/gestures/qsensorgesture.cpp +++ b/src/sensors/gestures/qsensorgesture.cpp @@ -152,19 +152,20 @@ void QSensorGesture::startDetection() return; Q_FOREACH (QSensorGestureRecognizer *recognizer, d_ptr->m_sensorRecognizers) { - if (recognizer !=0) { //it shouldn't be, but I am paranoid - connect(recognizer,SIGNAL(detected(QString)), - this,SIGNAL(detected(QString)),Qt::UniqueConnection); - - //connect recognizer signals - Q_FOREACH (QString method, recognizer->gestureSignals()) { - method.prepend(QLatin1String("2")); - connect(recognizer, method.toLatin1(), - this, method.toLatin1(), Qt::UniqueConnection); - } - - recognizer->startBackend(); + + Q_ASSERT(recognizer !=0); + + connect(recognizer,SIGNAL(detected(QString)), + this,SIGNAL(detected(QString)),Qt::UniqueConnection); + + //connect recognizer signals + Q_FOREACH (QString method, recognizer->gestureSignals()) { + method.prepend(QLatin1String("2")); + connect(recognizer, method.toLatin1(), + this, method.toLatin1(), Qt::UniqueConnection); } + + recognizer->startBackend(); } d_ptr->isActive = true; } diff --git a/tests/auto/qsensorgestures/qsensorgestures.pro b/tests/auto/qsensorgestures/qsensorgestures.pro index 5bccd762..a29e3c4d 100644 --- a/tests/auto/qsensorgestures/qsensorgestures.pro +++ b/tests/auto/qsensorgestures/qsensorgestures.pro @@ -6,6 +6,7 @@ QT += core testlib sensors QT -= gui SOURCES += tst_qsensorgesturetest.cpp +DEFINES += QT_NO_QOBJECT_CHECK PLUGIN_1_HEADERS = \ diff --git a/tests/auto/qsensorgestures/tst_qsensorgesturetest.cpp b/tests/auto/qsensorgestures/tst_qsensorgesturetest.cpp index 9b82e722..b5f4a0fd 100644 --- a/tests/auto/qsensorgestures/tst_qsensorgesturetest.cpp +++ b/tests/auto/qsensorgestures/tst_qsensorgesturetest.cpp @@ -141,6 +141,7 @@ private Q_SLOTS: void tst_sensor_gesture_threaded(); void tst_sensor_gesture(); + void tst_sensor_gesture_metacast(); void tst_recognizer(); @@ -488,6 +489,25 @@ void Tst_qsensorgestureTest::tst_sensor_gesture() gesture3 = 0; } +void Tst_qsensorgestureTest::tst_sensor_gesture_metacast() +{ + QSensorGesture *gesture = new QSensorGesture(QStringList() << "QtSensors.test", this); + // exercise qt_metacast + QVERIFY(!gesture->inherits("")); + QVERIFY(gesture->inherits("QObject")); + +#if defined(QT_NO_QOBJECT_CHECK) + QObject *o = qobject_cast<QObject *>(gesture); + QVERIFY(o); + + // this will fail in the compile time check for + // the Q_OBJECT macro in qobjectdefs.h unless QT_NO_QOBJECT_CHECK is defined, + QSensorGesture *gest = qobject_cast<QSensorGesture *>(o); + QVERIFY(!gest->gestureSignals().isEmpty()); +#endif + delete gesture; +} + void Tst_qsensorgestureTest::tst_recognizer() { @@ -574,6 +594,15 @@ void Tst_qsensorgestureTest::tst_sensorgesture_noid() QCOMPARE(gesture->invalidIds() ,QStringList() << "QtSensors.noid"); + QSensorGestureManager manager; + QStringList recognizerSignalsList = manager.recognizerSignals( "QtSensors.noid"); + QVERIFY(recognizerSignalsList.isEmpty()); + + QVERIFY(!recognizerSignalsList.contains("QtSensors.noid")); + + QSensorGestureRecognizer *fakeRecognizer = manager.sensorGestureRecognizer("QtSensors.noid"); + QVERIFY(!fakeRecognizer); + delete gesture; gesture = 0; } |