From e98b19879013b19bfc6dbdcdb4b8a6c3e3746739 Mon Sep 17 00:00:00 2001 From: Matthew Cattell Date: Thu, 8 Sep 2011 15:58:13 +0200 Subject: uncomment tests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I8aea71cfddb38fe1a24a74ca736a39e3f8817a5b Reviewed-on: http://codereview.qt-project.org/4464 Reviewed-by: Qt Sanity Bot Reviewed-by: Samuel Rødal --- .../declarative/qsgmousearea/tst_qsgmousearea.cpp | 1168 ++++++++++---------- 1 file changed, 584 insertions(+), 584 deletions(-) (limited to 'tests') diff --git a/tests/auto/declarative/qsgmousearea/tst_qsgmousearea.cpp b/tests/auto/declarative/qsgmousearea/tst_qsgmousearea.cpp index 0bc4e46ca7..c3f3ba1ed8 100644 --- a/tests/auto/declarative/qsgmousearea/tst_qsgmousearea.cpp +++ b/tests/auto/declarative/qsgmousearea/tst_qsgmousearea.cpp @@ -62,23 +62,23 @@ class tst_QSGMouseArea: public QObject private slots: void initTestCase(); void cleanupTestCase(); -// void dragProperties(); -// void resetDrag(); - void dragging(); -// void updateMouseAreaPosOnClick(); -// void updateMouseAreaPosOnResize(); -// void noOnClickedWithPressAndHold(); -// void onMousePressRejected(); -// void pressedCanceledOnWindowDeactivate(); -// void doubleClick(); -// void clickTwice(); -// void pressedOrdering(); -// void preventStealing(); -// void clickThrough(); -// void testQtQuick11Attributes(); -// void testQtQuick11Attributes_data(); -// void hoverPosition(); -// void hoverPropagation(); + void dragProperties(); + void resetDrag(); + void dragging(); + void updateMouseAreaPosOnClick(); + void updateMouseAreaPosOnResize(); + void noOnClickedWithPressAndHold(); + void onMousePressRejected(); + void pressedCanceledOnWindowDeactivate(); + void doubleClick(); + void clickTwice(); + void pressedOrdering(); + void preventStealing(); + void clickThrough(); + void testQtQuick11Attributes(); + void testQtQuick11Attributes_data(); + void hoverPosition(); + void hoverPropagation(); private: QSGView *createView(); @@ -94,120 +94,120 @@ void tst_QSGMouseArea::cleanupTestCase() } -//void tst_QSGMouseArea::dragProperties() -//{ -// QSGView *canvas = createView(); - -// canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/dragproperties.qml")); -// canvas->show(); -// canvas->requestActivateWindow(); -// QVERIFY(canvas->rootObject() != 0); - -// QSGMouseArea *mouseRegion = canvas->rootObject()->findChild("mouseregion"); -// QSGDrag *drag = mouseRegion->drag(); -// QVERIFY(mouseRegion != 0); -// QVERIFY(drag != 0); - -// // target -// QSGItem *blackRect = canvas->rootObject()->findChild("blackrect"); -// QVERIFY(blackRect != 0); -// QVERIFY(blackRect == drag->target()); -// QSGItem *rootItem = qobject_cast(canvas->rootObject()); -// QVERIFY(rootItem != 0); -// QSignalSpy targetSpy(drag, SIGNAL(targetChanged())); -// drag->setTarget(rootItem); -// QCOMPARE(targetSpy.count(),1); -// drag->setTarget(rootItem); -// QCOMPARE(targetSpy.count(),1); - -// // axis -// QCOMPARE(drag->axis(), QSGDrag::XandYAxis); -// QSignalSpy axisSpy(drag, SIGNAL(axisChanged())); -// drag->setAxis(QSGDrag::XAxis); -// QCOMPARE(drag->axis(), QSGDrag::XAxis); -// QCOMPARE(axisSpy.count(),1); -// drag->setAxis(QSGDrag::XAxis); -// QCOMPARE(axisSpy.count(),1); - -// // minimum and maximum properties -// QSignalSpy xminSpy(drag, SIGNAL(minimumXChanged())); -// QSignalSpy xmaxSpy(drag, SIGNAL(maximumXChanged())); -// QSignalSpy yminSpy(drag, SIGNAL(minimumYChanged())); -// QSignalSpy ymaxSpy(drag, SIGNAL(maximumYChanged())); - -// QCOMPARE(drag->xmin(), 0.0); -// QCOMPARE(drag->xmax(), rootItem->width()-blackRect->width()); -// QCOMPARE(drag->ymin(), 0.0); -// QCOMPARE(drag->ymax(), rootItem->height()-blackRect->height()); - -// drag->setXmin(10); -// drag->setXmax(10); -// drag->setYmin(10); -// drag->setYmax(10); - -// QCOMPARE(drag->xmin(), 10.0); -// QCOMPARE(drag->xmax(), 10.0); -// QCOMPARE(drag->ymin(), 10.0); -// QCOMPARE(drag->ymax(), 10.0); - -// QCOMPARE(xminSpy.count(),1); -// QCOMPARE(xmaxSpy.count(),1); -// QCOMPARE(yminSpy.count(),1); -// QCOMPARE(ymaxSpy.count(),1); - -// drag->setXmin(10); -// drag->setXmax(10); -// drag->setYmin(10); -// drag->setYmax(10); - -// QCOMPARE(xminSpy.count(),1); -// QCOMPARE(xmaxSpy.count(),1); -// QCOMPARE(yminSpy.count(),1); -// QCOMPARE(ymaxSpy.count(),1); - -// // filterChildren -// QSignalSpy filterChildrenSpy(drag, SIGNAL(filterChildrenChanged())); - -// drag->setFilterChildren(true); - -// QVERIFY(drag->filterChildren()); -// QCOMPARE(filterChildrenSpy.count(), 1); - -// drag->setFilterChildren(true); -// QCOMPARE(filterChildrenSpy.count(), 1); - -// delete canvas; -//} - -//void tst_QSGMouseArea::resetDrag() -//{ -// QSGView *canvas = createView(); - -// canvas->rootContext()->setContextProperty("haveTarget", QVariant(true)); -// canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/dragreset.qml")); -// canvas->show(); -// canvas->requestActivateWindow(); -// QVERIFY(canvas->rootObject() != 0); - -// QSGMouseArea *mouseRegion = canvas->rootObject()->findChild("mouseregion"); -// QSGDrag *drag = mouseRegion->drag(); -// QVERIFY(mouseRegion != 0); -// QVERIFY(drag != 0); - -// // target -// QSGItem *blackRect = canvas->rootObject()->findChild("blackrect"); -// QVERIFY(blackRect != 0); -// QVERIFY(blackRect == drag->target()); -// QSGItem *rootItem = qobject_cast(canvas->rootObject()); -// QVERIFY(rootItem != 0); -// QSignalSpy targetSpy(drag, SIGNAL(targetChanged())); -// QVERIFY(drag->target() != 0); -// canvas->rootContext()->setContextProperty("haveTarget", QVariant(false)); -// QCOMPARE(targetSpy.count(),1); -// QVERIFY(drag->target() == 0); - -// delete canvas; -//} +void tst_QSGMouseArea::dragProperties() +{ + QSGView *canvas = createView(); + + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/dragproperties.qml")); + canvas->show(); + canvas->requestActivateWindow(); + QVERIFY(canvas->rootObject() != 0); + + QSGMouseArea *mouseRegion = canvas->rootObject()->findChild("mouseregion"); + QSGDrag *drag = mouseRegion->drag(); + QVERIFY(mouseRegion != 0); + QVERIFY(drag != 0); + + // target + QSGItem *blackRect = canvas->rootObject()->findChild("blackrect"); + QVERIFY(blackRect != 0); + QVERIFY(blackRect == drag->target()); + QSGItem *rootItem = qobject_cast(canvas->rootObject()); + QVERIFY(rootItem != 0); + QSignalSpy targetSpy(drag, SIGNAL(targetChanged())); + drag->setTarget(rootItem); + QCOMPARE(targetSpy.count(),1); + drag->setTarget(rootItem); + QCOMPARE(targetSpy.count(),1); + + // axis + QCOMPARE(drag->axis(), QSGDrag::XandYAxis); + QSignalSpy axisSpy(drag, SIGNAL(axisChanged())); + drag->setAxis(QSGDrag::XAxis); + QCOMPARE(drag->axis(), QSGDrag::XAxis); + QCOMPARE(axisSpy.count(),1); + drag->setAxis(QSGDrag::XAxis); + QCOMPARE(axisSpy.count(),1); + + // minimum and maximum properties + QSignalSpy xminSpy(drag, SIGNAL(minimumXChanged())); + QSignalSpy xmaxSpy(drag, SIGNAL(maximumXChanged())); + QSignalSpy yminSpy(drag, SIGNAL(minimumYChanged())); + QSignalSpy ymaxSpy(drag, SIGNAL(maximumYChanged())); + + QCOMPARE(drag->xmin(), 0.0); + QCOMPARE(drag->xmax(), rootItem->width()-blackRect->width()); + QCOMPARE(drag->ymin(), 0.0); + QCOMPARE(drag->ymax(), rootItem->height()-blackRect->height()); + + drag->setXmin(10); + drag->setXmax(10); + drag->setYmin(10); + drag->setYmax(10); + + QCOMPARE(drag->xmin(), 10.0); + QCOMPARE(drag->xmax(), 10.0); + QCOMPARE(drag->ymin(), 10.0); + QCOMPARE(drag->ymax(), 10.0); + + QCOMPARE(xminSpy.count(),1); + QCOMPARE(xmaxSpy.count(),1); + QCOMPARE(yminSpy.count(),1); + QCOMPARE(ymaxSpy.count(),1); + + drag->setXmin(10); + drag->setXmax(10); + drag->setYmin(10); + drag->setYmax(10); + + QCOMPARE(xminSpy.count(),1); + QCOMPARE(xmaxSpy.count(),1); + QCOMPARE(yminSpy.count(),1); + QCOMPARE(ymaxSpy.count(),1); + + // filterChildren + QSignalSpy filterChildrenSpy(drag, SIGNAL(filterChildrenChanged())); + + drag->setFilterChildren(true); + + QVERIFY(drag->filterChildren()); + QCOMPARE(filterChildrenSpy.count(), 1); + + drag->setFilterChildren(true); + QCOMPARE(filterChildrenSpy.count(), 1); + + delete canvas; +} + +void tst_QSGMouseArea::resetDrag() +{ + QSGView *canvas = createView(); + + canvas->rootContext()->setContextProperty("haveTarget", QVariant(true)); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/dragreset.qml")); + canvas->show(); + canvas->requestActivateWindow(); + QVERIFY(canvas->rootObject() != 0); + + QSGMouseArea *mouseRegion = canvas->rootObject()->findChild("mouseregion"); + QSGDrag *drag = mouseRegion->drag(); + QVERIFY(mouseRegion != 0); + QVERIFY(drag != 0); + + // target + QSGItem *blackRect = canvas->rootObject()->findChild("blackrect"); + QVERIFY(blackRect != 0); + QVERIFY(blackRect == drag->target()); + QSGItem *rootItem = qobject_cast(canvas->rootObject()); + QVERIFY(rootItem != 0); + QSignalSpy targetSpy(drag, SIGNAL(targetChanged())); + QVERIFY(drag->target() != 0); + canvas->rootContext()->setContextProperty("haveTarget", QVariant(false)); + QCOMPARE(targetSpy.count(),1); + QVERIFY(drag->target() == 0); + + delete canvas; +} void tst_QSGMouseArea::dragging() @@ -278,557 +278,557 @@ QSGView *tst_QSGMouseArea::createView() return canvas; } -//void tst_QSGMouseArea::updateMouseAreaPosOnClick() -//{ -// QSGView *canvas = createView(); -// canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/updateMousePosOnClick.qml")); -// canvas->show(); -// canvas->requestActivateWindow(); -// QVERIFY(canvas->rootObject() != 0); +void tst_QSGMouseArea::updateMouseAreaPosOnClick() +{ + QSGView *canvas = createView(); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/updateMousePosOnClick.qml")); + canvas->show(); + canvas->requestActivateWindow(); + QVERIFY(canvas->rootObject() != 0); -// QSGMouseArea *mouseRegion = canvas->rootObject()->findChild("mouseregion"); -// QVERIFY(mouseRegion != 0); + QSGMouseArea *mouseRegion = canvas->rootObject()->findChild("mouseregion"); + QVERIFY(mouseRegion != 0); -// QSGRectangle *rect = canvas->rootObject()->findChild("ball"); -// QVERIFY(rect != 0); + QSGRectangle *rect = canvas->rootObject()->findChild("ball"); + QVERIFY(rect != 0); -// QCOMPARE(mouseRegion->mouseX(), rect->x()); -// QCOMPARE(mouseRegion->mouseY(), rect->y()); + QCOMPARE(mouseRegion->mouseX(), rect->x()); + QCOMPARE(mouseRegion->mouseY(), rect->y()); -// QMouseEvent event(QEvent::MouseButtonPress, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, 0); -// QApplication::sendEvent(canvas, &event); + QMouseEvent event(QEvent::MouseButtonPress, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, 0); + QApplication::sendEvent(canvas, &event); -// QCOMPARE(mouseRegion->mouseX(), 100.0); -// QCOMPARE(mouseRegion->mouseY(), 100.0); + QCOMPARE(mouseRegion->mouseX(), 100.0); + QCOMPARE(mouseRegion->mouseY(), 100.0); -// QCOMPARE(mouseRegion->mouseX(), rect->x()); -// QCOMPARE(mouseRegion->mouseY(), rect->y()); + QCOMPARE(mouseRegion->mouseX(), rect->x()); + QCOMPARE(mouseRegion->mouseY(), rect->y()); -// delete canvas; -//} + delete canvas; +} -//void tst_QSGMouseArea::updateMouseAreaPosOnResize() -//{ -// QSGView *canvas = createView(); -// canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/updateMousePosOnResize.qml")); -// canvas->show(); -// canvas->requestActivateWindow(); -// QVERIFY(canvas->rootObject() != 0); +void tst_QSGMouseArea::updateMouseAreaPosOnResize() +{ + QSGView *canvas = createView(); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/updateMousePosOnResize.qml")); + canvas->show(); + canvas->requestActivateWindow(); + QVERIFY(canvas->rootObject() != 0); -// QSGMouseArea *mouseRegion = canvas->rootObject()->findChild("mouseregion"); -// QVERIFY(mouseRegion != 0); + QSGMouseArea *mouseRegion = canvas->rootObject()->findChild("mouseregion"); + QVERIFY(mouseRegion != 0); -// QSGRectangle *rect = canvas->rootObject()->findChild("brother"); -// QVERIFY(rect != 0); + QSGRectangle *rect = canvas->rootObject()->findChild("brother"); + QVERIFY(rect != 0); -// QCOMPARE(mouseRegion->mouseX(), 0.0); -// QCOMPARE(mouseRegion->mouseY(), 0.0); + QCOMPARE(mouseRegion->mouseX(), 0.0); + QCOMPARE(mouseRegion->mouseY(), 0.0); -// QMouseEvent event(QEvent::MouseButtonPress, rect->pos().toPoint(), Qt::LeftButton, Qt::LeftButton, 0); -// QApplication::sendEvent(canvas, &event); + QMouseEvent event(QEvent::MouseButtonPress, rect->pos().toPoint(), Qt::LeftButton, Qt::LeftButton, 0); + QApplication::sendEvent(canvas, &event); -// QVERIFY(!mouseRegion->property("emitPositionChanged").toBool()); -// QVERIFY(mouseRegion->property("mouseMatchesPos").toBool()); + QVERIFY(!mouseRegion->property("emitPositionChanged").toBool()); + QVERIFY(mouseRegion->property("mouseMatchesPos").toBool()); -// QCOMPARE(mouseRegion->property("x1").toInt(), 0); -// QCOMPARE(mouseRegion->property("y1").toInt(), 0); + QCOMPARE(mouseRegion->property("x1").toInt(), 0); + QCOMPARE(mouseRegion->property("y1").toInt(), 0); -// // XXX: is it on purpose that mouseX is real and mouse.x is int? -// QCOMPARE(mouseRegion->property("x2").toInt(), (int) rect->x()); -// QCOMPARE(mouseRegion->property("y2").toInt(), (int) rect->y()); + // XXX: is it on purpose that mouseX is real and mouse.x is int? + QCOMPARE(mouseRegion->property("x2").toInt(), (int) rect->x()); + QCOMPARE(mouseRegion->property("y2").toInt(), (int) rect->y()); -// QCOMPARE(mouseRegion->mouseX(), rect->x()); -// QCOMPARE(mouseRegion->mouseY(), rect->y()); + QCOMPARE(mouseRegion->mouseX(), rect->x()); + QCOMPARE(mouseRegion->mouseY(), rect->y()); -// delete canvas; -//} + delete canvas; +} -//void tst_QSGMouseArea::noOnClickedWithPressAndHold() -//{ -// { -// // We handle onPressAndHold, therefore no onClicked -// QSGView *canvas = createView(); -// canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/clickandhold.qml")); -// canvas->show(); -// canvas->requestActivateWindow(); -// QVERIFY(canvas->rootObject() != 0); +void tst_QSGMouseArea::noOnClickedWithPressAndHold() +{ + { + // We handle onPressAndHold, therefore no onClicked + QSGView *canvas = createView(); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/clickandhold.qml")); + canvas->show(); + canvas->requestActivateWindow(); + QVERIFY(canvas->rootObject() != 0); -// QMouseEvent pressEvent(QEvent::MouseButtonPress, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, 0); -// QApplication::sendEvent(canvas, &pressEvent); + QMouseEvent pressEvent(QEvent::MouseButtonPress, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, 0); + QApplication::sendEvent(canvas, &pressEvent); -// QVERIFY(!canvas->rootObject()->property("clicked").toBool()); -// QVERIFY(!canvas->rootObject()->property("held").toBool()); + QVERIFY(!canvas->rootObject()->property("clicked").toBool()); + QVERIFY(!canvas->rootObject()->property("held").toBool()); -// QTest::qWait(1000); + QTest::qWait(1000); -// QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, 0); -// QApplication::sendEvent(canvas, &releaseEvent); + QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, 0); + QApplication::sendEvent(canvas, &releaseEvent); -// QVERIFY(!canvas->rootObject()->property("clicked").toBool()); -// QVERIFY(canvas->rootObject()->property("held").toBool()); + QVERIFY(!canvas->rootObject()->property("clicked").toBool()); + QVERIFY(canvas->rootObject()->property("held").toBool()); -// delete canvas; -// } + delete canvas; + } -// { -// // We do not handle onPressAndHold, therefore we get onClicked -// QSGView *canvas = createView(); -// canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/noclickandhold.qml")); -// canvas->show(); -// canvas->requestActivateWindow(); -// QVERIFY(canvas->rootObject() != 0); - -// QMouseEvent pressEvent(QEvent::MouseButtonPress, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, 0); -// QApplication::sendEvent(canvas, &pressEvent); - -// QVERIFY(!canvas->rootObject()->property("clicked").toBool()); - -// QTest::qWait(1000); - -// QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, 0); -// QApplication::sendEvent(canvas, &releaseEvent); - -// QVERIFY(canvas->rootObject()->property("clicked").toBool()); - -// delete canvas; -// } -//} - -//void tst_QSGMouseArea::onMousePressRejected() -//{ -// QSGView *canvas = createView(); -// canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/rejectEvent.qml")); -// canvas->show(); -// canvas->requestActivateWindow(); -// QVERIFY(canvas->rootObject() != 0); -// QVERIFY(canvas->rootObject()->property("enabled").toBool()); - -// QVERIFY(!canvas->rootObject()->property("mr1_pressed").toBool()); -// QVERIFY(!canvas->rootObject()->property("mr1_released").toBool()); -// QVERIFY(!canvas->rootObject()->property("mr1_canceled").toBool()); -// QVERIFY(!canvas->rootObject()->property("mr2_pressed").toBool()); -// QVERIFY(!canvas->rootObject()->property("mr2_released").toBool()); -// QVERIFY(!canvas->rootObject()->property("mr2_canceled").toBool()); - -// QMouseEvent pressEvent(QEvent::MouseButtonPress, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, 0); -// QApplication::sendEvent(canvas, &pressEvent); - -// QVERIFY(canvas->rootObject()->property("mr1_pressed").toBool()); -// QVERIFY(!canvas->rootObject()->property("mr1_released").toBool()); -// QVERIFY(!canvas->rootObject()->property("mr1_canceled").toBool()); -// QVERIFY(canvas->rootObject()->property("mr2_pressed").toBool()); -// QVERIFY(!canvas->rootObject()->property("mr2_released").toBool()); -// QVERIFY(canvas->rootObject()->property("mr2_canceled").toBool()); - -// QTest::qWait(200); - -// QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, 0); -// QApplication::sendEvent(canvas, &releaseEvent); - -// QVERIFY(canvas->rootObject()->property("mr1_released").toBool()); -// QVERIFY(!canvas->rootObject()->property("mr1_canceled").toBool()); -// QVERIFY(!canvas->rootObject()->property("mr2_released").toBool()); - -// delete canvas; -//} -//void tst_QSGMouseArea::pressedCanceledOnWindowDeactivate() -//{ -// QSGView *canvas = createView(); -// canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/pressedCanceled.qml")); -// canvas->show(); -// canvas->requestActivateWindow(); -// QVERIFY(canvas->rootObject() != 0); -// QVERIFY(!canvas->rootObject()->property("pressed").toBool()); -// QVERIFY(!canvas->rootObject()->property("canceled").toBool()); -// QVERIFY(!canvas->rootObject()->property("released").toBool()); - -// QMouseEvent pressEvent(QEvent::MouseButtonPress, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, 0); -// QApplication::sendEvent(canvas, &pressEvent); - -// QVERIFY(canvas->rootObject()->property("pressed").toBool()); -// QVERIFY(!canvas->rootObject()->property("canceled").toBool()); -// QVERIFY(!canvas->rootObject()->property("released").toBool()); - -// QTest::qWait(200); + { + // We do not handle onPressAndHold, therefore we get onClicked + QSGView *canvas = createView(); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/noclickandhold.qml")); + canvas->show(); + canvas->requestActivateWindow(); + QVERIFY(canvas->rootObject() != 0); -// QEvent windowDeactivateEvent(QEvent::WindowDeactivate); -// QApplication::sendEvent(canvas, &windowDeactivateEvent); -// QVERIFY(!canvas->rootObject()->property("pressed").toBool()); -// QVERIFY(canvas->rootObject()->property("canceled").toBool()); -// QVERIFY(!canvas->rootObject()->property("released").toBool()); + QMouseEvent pressEvent(QEvent::MouseButtonPress, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, 0); + QApplication::sendEvent(canvas, &pressEvent); -// QTest::qWait(200); + QVERIFY(!canvas->rootObject()->property("clicked").toBool()); -// //press again -// QApplication::sendEvent(canvas, &pressEvent); -// QVERIFY(canvas->rootObject()->property("pressed").toBool()); -// QVERIFY(!canvas->rootObject()->property("canceled").toBool()); -// QVERIFY(!canvas->rootObject()->property("released").toBool()); + QTest::qWait(1000); -// QTest::qWait(200); + QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, 0); + QApplication::sendEvent(canvas, &releaseEvent); -// //release -// QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, 0); -// QApplication::sendEvent(canvas, &releaseEvent); -// QVERIFY(!canvas->rootObject()->property("pressed").toBool()); -// QVERIFY(!canvas->rootObject()->property("canceled").toBool()); -// QVERIFY(canvas->rootObject()->property("released").toBool()); + QVERIFY(canvas->rootObject()->property("clicked").toBool()); -// delete canvas; -//} -//void tst_QSGMouseArea::doubleClick() -//{ -// QSGView *canvas = createView(); -// canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/doubleclick.qml")); -// canvas->show(); -// canvas->requestActivateWindow(); -// QVERIFY(canvas->rootObject() != 0); + delete canvas; + } +} -// QMouseEvent pressEvent(QEvent::MouseButtonPress, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, 0); -// QApplication::sendEvent(canvas, &pressEvent); +void tst_QSGMouseArea::onMousePressRejected() +{ + QSGView *canvas = createView(); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/rejectEvent.qml")); + canvas->show(); + canvas->requestActivateWindow(); + QVERIFY(canvas->rootObject() != 0); + QVERIFY(canvas->rootObject()->property("enabled").toBool()); -// QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, 0); -// QApplication::sendEvent(canvas, &releaseEvent); + QVERIFY(!canvas->rootObject()->property("mr1_pressed").toBool()); + QVERIFY(!canvas->rootObject()->property("mr1_released").toBool()); + QVERIFY(!canvas->rootObject()->property("mr1_canceled").toBool()); + QVERIFY(!canvas->rootObject()->property("mr2_pressed").toBool()); + QVERIFY(!canvas->rootObject()->property("mr2_released").toBool()); + QVERIFY(!canvas->rootObject()->property("mr2_canceled").toBool()); -// QCOMPARE(canvas->rootObject()->property("released").toInt(), 1); + QMouseEvent pressEvent(QEvent::MouseButtonPress, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, 0); + QApplication::sendEvent(canvas, &pressEvent); -// pressEvent = QMouseEvent(QEvent::MouseButtonDblClick, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, 0); -// QApplication::sendEvent(canvas, &pressEvent); + QVERIFY(canvas->rootObject()->property("mr1_pressed").toBool()); + QVERIFY(!canvas->rootObject()->property("mr1_released").toBool()); + QVERIFY(!canvas->rootObject()->property("mr1_canceled").toBool()); + QVERIFY(canvas->rootObject()->property("mr2_pressed").toBool()); + QVERIFY(!canvas->rootObject()->property("mr2_released").toBool()); + QVERIFY(canvas->rootObject()->property("mr2_canceled").toBool()); -// QApplication::sendEvent(canvas, &releaseEvent); + QTest::qWait(200); -// QCOMPARE(canvas->rootObject()->property("clicked").toInt(), 1); -// QCOMPARE(canvas->rootObject()->property("doubleClicked").toInt(), 1); -// QCOMPARE(canvas->rootObject()->property("released").toInt(), 2); + QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, 0); + QApplication::sendEvent(canvas, &releaseEvent); -// delete canvas; -//} + QVERIFY(canvas->rootObject()->property("mr1_released").toBool()); + QVERIFY(!canvas->rootObject()->property("mr1_canceled").toBool()); + QVERIFY(!canvas->rootObject()->property("mr2_released").toBool()); -//// QTBUG-14832 -//void tst_QSGMouseArea::clickTwice() -//{ -// QSGView *canvas = createView(); -// canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/clicktwice.qml")); -// canvas->show(); -// canvas->requestActivateWindow(); -// QVERIFY(canvas->rootObject() != 0); + delete canvas; +} +void tst_QSGMouseArea::pressedCanceledOnWindowDeactivate() +{ + QSGView *canvas = createView(); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/pressedCanceled.qml")); + canvas->show(); + canvas->requestActivateWindow(); + QVERIFY(canvas->rootObject() != 0); + QVERIFY(!canvas->rootObject()->property("pressed").toBool()); + QVERIFY(!canvas->rootObject()->property("canceled").toBool()); + QVERIFY(!canvas->rootObject()->property("released").toBool()); -// QMouseEvent pressEvent(QEvent::MouseButtonPress, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, 0); -// QApplication::sendEvent(canvas, &pressEvent); + QMouseEvent pressEvent(QEvent::MouseButtonPress, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, 0); + QApplication::sendEvent(canvas, &pressEvent); -// QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, 0); -// QApplication::sendEvent(canvas, &releaseEvent); + QVERIFY(canvas->rootObject()->property("pressed").toBool()); + QVERIFY(!canvas->rootObject()->property("canceled").toBool()); + QVERIFY(!canvas->rootObject()->property("released").toBool()); -// QCOMPARE(canvas->rootObject()->property("pressed").toInt(), 1); -// QCOMPARE(canvas->rootObject()->property("released").toInt(), 1); -// QCOMPARE(canvas->rootObject()->property("clicked").toInt(), 1); + QTest::qWait(200); -// pressEvent = QMouseEvent(QEvent::MouseButtonDblClick, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, 0); -// QApplication::sendEvent(canvas, &pressEvent); + QEvent windowDeactivateEvent(QEvent::WindowDeactivate); + QApplication::sendEvent(canvas, &windowDeactivateEvent); + QVERIFY(!canvas->rootObject()->property("pressed").toBool()); + QVERIFY(canvas->rootObject()->property("canceled").toBool()); + QVERIFY(!canvas->rootObject()->property("released").toBool()); -// QApplication::sendEvent(canvas, &pressEvent); -// QApplication::sendEvent(canvas, &releaseEvent); + QTest::qWait(200); -// QCOMPARE(canvas->rootObject()->property("pressed").toInt(), 2); -// QCOMPARE(canvas->rootObject()->property("released").toInt(), 2); -// QCOMPARE(canvas->rootObject()->property("clicked").toInt(), 2); + //press again + QApplication::sendEvent(canvas, &pressEvent); + QVERIFY(canvas->rootObject()->property("pressed").toBool()); + QVERIFY(!canvas->rootObject()->property("canceled").toBool()); + QVERIFY(!canvas->rootObject()->property("released").toBool()); -// delete canvas; -//} + QTest::qWait(200); -//void tst_QSGMouseArea::pressedOrdering() -//{ -// QSGView *canvas = createView(); -// canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/pressedOrdering.qml")); -// canvas->show(); -// canvas->requestActivateWindow(); -// QVERIFY(canvas->rootObject() != 0); + //release + QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, 0); + QApplication::sendEvent(canvas, &releaseEvent); + QVERIFY(!canvas->rootObject()->property("pressed").toBool()); + QVERIFY(!canvas->rootObject()->property("canceled").toBool()); + QVERIFY(canvas->rootObject()->property("released").toBool()); -// QCOMPARE(canvas->rootObject()->property("value").toString(), QLatin1String("base")); + delete canvas; +} +void tst_QSGMouseArea::doubleClick() +{ + QSGView *canvas = createView(); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/doubleclick.qml")); + canvas->show(); + canvas->requestActivateWindow(); + QVERIFY(canvas->rootObject() != 0); -// QMouseEvent pressEvent(QEvent::MouseButtonPress, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, 0); -// QApplication::sendEvent(canvas, &pressEvent); + QMouseEvent pressEvent(QEvent::MouseButtonPress, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, 0); + QApplication::sendEvent(canvas, &pressEvent); -// QCOMPARE(canvas->rootObject()->property("value").toString(), QLatin1String("pressed")); + QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, 0); + QApplication::sendEvent(canvas, &releaseEvent); -// QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, 0); -// QApplication::sendEvent(canvas, &releaseEvent); + QCOMPARE(canvas->rootObject()->property("released").toInt(), 1); -// QCOMPARE(canvas->rootObject()->property("value").toString(), QLatin1String("toggled")); + pressEvent = QMouseEvent(QEvent::MouseButtonDblClick, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, 0); + QApplication::sendEvent(canvas, &pressEvent); -// QApplication::sendEvent(canvas, &pressEvent); + QApplication::sendEvent(canvas, &releaseEvent); -// QCOMPARE(canvas->rootObject()->property("value").toString(), QLatin1String("pressed")); + QCOMPARE(canvas->rootObject()->property("clicked").toInt(), 1); + QCOMPARE(canvas->rootObject()->property("doubleClicked").toInt(), 1); + QCOMPARE(canvas->rootObject()->property("released").toInt(), 2); -// delete canvas; -//} + delete canvas; +} -//void tst_QSGMouseArea::preventStealing() -//{ -// QSGView *canvas = createView(); +// QTBUG-14832 +void tst_QSGMouseArea::clickTwice() +{ + QSGView *canvas = createView(); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/clicktwice.qml")); + canvas->show(); + canvas->requestActivateWindow(); + QVERIFY(canvas->rootObject() != 0); -// canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/preventstealing.qml")); -// canvas->show(); -// canvas->requestActivateWindow(); -// QVERIFY(canvas->rootObject() != 0); + QMouseEvent pressEvent(QEvent::MouseButtonPress, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, 0); + QApplication::sendEvent(canvas, &pressEvent); -// QSGFlickable *flickable = qobject_cast(canvas->rootObject()); -// QVERIFY(flickable != 0); + QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, 0); + QApplication::sendEvent(canvas, &releaseEvent); -// QSGMouseArea *mouseArea = canvas->rootObject()->findChild("mousearea"); -// QVERIFY(mouseArea != 0); + QCOMPARE(canvas->rootObject()->property("pressed").toInt(), 1); + QCOMPARE(canvas->rootObject()->property("released").toInt(), 1); + QCOMPARE(canvas->rootObject()->property("clicked").toInt(), 1); -// QSignalSpy mousePositionSpy(mouseArea, SIGNAL(positionChanged(QSGMouseEvent*))); + pressEvent = QMouseEvent(QEvent::MouseButtonDblClick, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, 0); + QApplication::sendEvent(canvas, &pressEvent); -// QTest::mousePress(canvas, Qt::LeftButton, 0, QPoint(80, 80)); + QApplication::sendEvent(canvas, &pressEvent); + QApplication::sendEvent(canvas, &releaseEvent); -// // Without preventStealing, mouse movement over MouseArea would -// // cause the Flickable to steal mouse and trigger content movement. + QCOMPARE(canvas->rootObject()->property("pressed").toInt(), 2); + QCOMPARE(canvas->rootObject()->property("released").toInt(), 2); + QCOMPARE(canvas->rootObject()->property("clicked").toInt(), 2); -// QMouseEvent moveEvent(QEvent::MouseMove, QPoint(70, 70), Qt::LeftButton, Qt::LeftButton, 0); -// QApplication::sendEvent(canvas, &moveEvent); + delete canvas; +} -// moveEvent = QMouseEvent(QEvent::MouseMove, QPoint(60, 60), Qt::LeftButton, Qt::LeftButton, 0); -// QApplication::sendEvent(canvas, &moveEvent); +void tst_QSGMouseArea::pressedOrdering() +{ + QSGView *canvas = createView(); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/pressedOrdering.qml")); + canvas->show(); + canvas->requestActivateWindow(); + QVERIFY(canvas->rootObject() != 0); -// moveEvent = QMouseEvent(QEvent::MouseMove, QPoint(50, 50), Qt::LeftButton, Qt::LeftButton, 0); -// QApplication::sendEvent(canvas, &moveEvent); + QCOMPARE(canvas->rootObject()->property("value").toString(), QLatin1String("base")); + + QMouseEvent pressEvent(QEvent::MouseButtonPress, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, 0); + QApplication::sendEvent(canvas, &pressEvent); -// // We should have received all three move events -// QCOMPARE(mousePositionSpy.count(), 3); -// QVERIFY(mouseArea->pressed()); + QCOMPARE(canvas->rootObject()->property("value").toString(), QLatin1String("pressed")); -// // Flickable content should not have moved. -// QCOMPARE(flickable->contentX(), 0.); -// QCOMPARE(flickable->contentY(), 0.); + QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, 0); + QApplication::sendEvent(canvas, &releaseEvent); -// QTest::mouseRelease(canvas, Qt::LeftButton, 0, QPoint(50, 50)); + QCOMPARE(canvas->rootObject()->property("value").toString(), QLatin1String("toggled")); -// // Now allow stealing and confirm Flickable does its thing. -// canvas->rootObject()->setProperty("stealing", false); + QApplication::sendEvent(canvas, &pressEvent); -// QTest::mousePress(canvas, Qt::LeftButton, 0, QPoint(80, 80)); + QCOMPARE(canvas->rootObject()->property("value").toString(), QLatin1String("pressed")); -// // Without preventStealing, mouse movement over MouseArea would -// // cause the Flickable to steal mouse and trigger content movement. -// moveEvent = QMouseEvent(QEvent::MouseMove, QPoint(70, 70), Qt::LeftButton, Qt::LeftButton, 0); -// QApplication::sendEvent(canvas, &moveEvent); + delete canvas; +} -// moveEvent = QMouseEvent(QEvent::MouseMove, QPoint(60, 60), Qt::LeftButton, Qt::LeftButton, 0); -// QApplication::sendEvent(canvas, &moveEvent); +void tst_QSGMouseArea::preventStealing() +{ + QSGView *canvas = createView(); -// moveEvent = QMouseEvent(QEvent::MouseMove, QPoint(50, 50), Qt::LeftButton, Qt::LeftButton, 0); -// QApplication::sendEvent(canvas, &moveEvent); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/preventstealing.qml")); + canvas->show(); + canvas->requestActivateWindow(); + QVERIFY(canvas->rootObject() != 0); -// // We should only have received the first move event -// QCOMPARE(mousePositionSpy.count(), 4); -// // Our press should be taken away -// QVERIFY(!mouseArea->pressed()); + QSGFlickable *flickable = qobject_cast(canvas->rootObject()); + QVERIFY(flickable != 0); -// // Flickable content should have moved. -// QCOMPARE(flickable->contentX(), 10.); -// QCOMPARE(flickable->contentY(), 10.); + QSGMouseArea *mouseArea = canvas->rootObject()->findChild("mousearea"); + QVERIFY(mouseArea != 0); -// QTest::mouseRelease(canvas, Qt::LeftButton, 0, QPoint(50, 50)); + QSignalSpy mousePositionSpy(mouseArea, SIGNAL(positionChanged(QSGMouseEvent*))); -// delete canvas; -//} + QTest::mousePress(canvas, Qt::LeftButton, 0, QPoint(80, 80)); -//void tst_QSGMouseArea::clickThrough() -//{ -// //With no handlers defined click, doubleClick and PressAndHold should propagate to those with handlers -// QSGView *canvas = createView(); -// canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/clickThrough.qml")); -// canvas->show(); -// canvas->requestActivateWindow(); -// QVERIFY(canvas->rootObject() != 0); + // Without preventStealing, mouse movement over MouseArea would + // cause the Flickable to steal mouse and trigger content movement. -// QMouseEvent pressEvent(QEvent::MouseButtonPress, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, 0); -// QApplication::sendEvent(canvas, &pressEvent); + QMouseEvent moveEvent(QEvent::MouseMove, QPoint(70, 70), Qt::LeftButton, Qt::LeftButton, 0); + QApplication::sendEvent(canvas, &moveEvent); -// QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, 0); -// QApplication::sendEvent(canvas, &releaseEvent); + moveEvent = QMouseEvent(QEvent::MouseMove, QPoint(60, 60), Qt::LeftButton, Qt::LeftButton, 0); + QApplication::sendEvent(canvas, &moveEvent); -// QCOMPARE(canvas->rootObject()->property("presses").toInt(), 0); -// QCOMPARE(canvas->rootObject()->property("clicks").toInt(), 1); + moveEvent = QMouseEvent(QEvent::MouseMove, QPoint(50, 50), Qt::LeftButton, Qt::LeftButton, 0); + QApplication::sendEvent(canvas, &moveEvent); -// QApplication::sendEvent(canvas, &pressEvent); -// QTest::qWait(1000); -// QApplication::sendEvent(canvas, &releaseEvent); + // We should have received all three move events + QCOMPARE(mousePositionSpy.count(), 3); + QVERIFY(mouseArea->pressed()); -// QCOMPARE(canvas->rootObject()->property("presses").toInt(), 0); -// QCOMPARE(canvas->rootObject()->property("clicks").toInt(), 1); -// QCOMPARE(canvas->rootObject()->property("pressAndHolds").toInt(), 1); + // Flickable content should not have moved. + QCOMPARE(flickable->contentX(), 0.); + QCOMPARE(flickable->contentY(), 0.); -// QApplication::sendEvent(canvas, &pressEvent); -// QApplication::sendEvent(canvas, &releaseEvent); -// pressEvent = QMouseEvent(QEvent::MouseButtonDblClick, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, 0); + QTest::mouseRelease(canvas, Qt::LeftButton, 0, QPoint(50, 50)); -// QApplication::sendEvent(canvas, &pressEvent); -// QApplication::sendEvent(canvas, &releaseEvent); + // Now allow stealing and confirm Flickable does its thing. + canvas->rootObject()->setProperty("stealing", false); -// QCOMPARE(canvas->rootObject()->property("presses").toInt(), 0); -// QCOMPARE(canvas->rootObject()->property("clicks").toInt(), 2); -// QCOMPARE(canvas->rootObject()->property("doubleClicks").toInt(), 1); -// QCOMPARE(canvas->rootObject()->property("pressAndHolds").toInt(), 1); + QTest::mousePress(canvas, Qt::LeftButton, 0, QPoint(80, 80)); -// delete canvas; + // Without preventStealing, mouse movement over MouseArea would + // cause the Flickable to steal mouse and trigger content movement. + moveEvent = QMouseEvent(QEvent::MouseMove, QPoint(70, 70), Qt::LeftButton, Qt::LeftButton, 0); + QApplication::sendEvent(canvas, &moveEvent); -// //With handlers defined click, doubleClick and PressAndHold should propagate only when explicitly ignored -// canvas = createView(); -// canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/clickThrough2.qml")); -// canvas->show(); -// canvas->requestActivateWindow(); -// QVERIFY(canvas->rootObject() != 0); + moveEvent = QMouseEvent(QEvent::MouseMove, QPoint(60, 60), Qt::LeftButton, Qt::LeftButton, 0); + QApplication::sendEvent(canvas, &moveEvent); -// pressEvent = QMouseEvent(QEvent::MouseButtonPress, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, 0); -// QApplication::sendEvent(canvas, &pressEvent); + moveEvent = QMouseEvent(QEvent::MouseMove, QPoint(50, 50), Qt::LeftButton, Qt::LeftButton, 0); + QApplication::sendEvent(canvas, &moveEvent); -// releaseEvent = QMouseEvent(QEvent::MouseButtonRelease, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, 0); -// QApplication::sendEvent(canvas, &releaseEvent); + // We should only have received the first move event + QCOMPARE(mousePositionSpy.count(), 4); + // Our press should be taken away + QVERIFY(!mouseArea->pressed()); -// QCOMPARE(canvas->rootObject()->property("presses").toInt(), 0); -// QCOMPARE(canvas->rootObject()->property("clicks").toInt(), 0); + // Flickable content should have moved. + QCOMPARE(flickable->contentX(), 10.); + QCOMPARE(flickable->contentY(), 10.); -// QApplication::sendEvent(canvas, &pressEvent); -// QTest::qWait(1000); -// QApplication::sendEvent(canvas, &releaseEvent); + QTest::mouseRelease(canvas, Qt::LeftButton, 0, QPoint(50, 50)); -// QCOMPARE(canvas->rootObject()->property("presses").toInt(), 0); -// QCOMPARE(canvas->rootObject()->property("clicks").toInt(), 0); -// QCOMPARE(canvas->rootObject()->property("pressAndHolds").toInt(), 0); + delete canvas; +} -// QApplication::sendEvent(canvas, &pressEvent); -// QApplication::sendEvent(canvas, &releaseEvent); +void tst_QSGMouseArea::clickThrough() +{ + //With no handlers defined click, doubleClick and PressAndHold should propagate to those with handlers + QSGView *canvas = createView(); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/clickThrough.qml")); + canvas->show(); + canvas->requestActivateWindow(); + QVERIFY(canvas->rootObject() != 0); -// pressEvent = QMouseEvent(QEvent::MouseButtonDblClick, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, 0); -// QApplication::sendEvent(canvas, &pressEvent); -// QApplication::sendEvent(canvas, &releaseEvent); + QMouseEvent pressEvent(QEvent::MouseButtonPress, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, 0); + QApplication::sendEvent(canvas, &pressEvent); -// QCOMPARE(canvas->rootObject()->property("presses").toInt(), 0); -// QCOMPARE(canvas->rootObject()->property("clicks").toInt(), 0); -// QCOMPARE(canvas->rootObject()->property("doubleClicks").toInt(), 0); -// QCOMPARE(canvas->rootObject()->property("pressAndHolds").toInt(), 0); - -// canvas->rootObject()->setProperty("letThrough", QVariant(true)); + QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, 0); + QApplication::sendEvent(canvas, &releaseEvent); -// pressEvent = QMouseEvent(QEvent::MouseButtonPress, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, 0); -// QApplication::sendEvent(canvas, &pressEvent); + QCOMPARE(canvas->rootObject()->property("presses").toInt(), 0); + QCOMPARE(canvas->rootObject()->property("clicks").toInt(), 1); -// releaseEvent = QMouseEvent(QEvent::MouseButtonRelease, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, 0); -// QApplication::sendEvent(canvas, &releaseEvent); - -// QCOMPARE(canvas->rootObject()->property("presses").toInt(), 0); -// QCOMPARE(canvas->rootObject()->property("clicks").toInt(), 1); - -// QApplication::sendEvent(canvas, &pressEvent); -// QTest::qWait(1000); -// QApplication::sendEvent(canvas, &releaseEvent); - -// QCOMPARE(canvas->rootObject()->property("presses").toInt(), 0); -// QCOMPARE(canvas->rootObject()->property("clicks").toInt(), 1); -// QCOMPARE(canvas->rootObject()->property("pressAndHolds").toInt(), 1); - -// QApplication::sendEvent(canvas, &pressEvent); -// QApplication::sendEvent(canvas, &releaseEvent); -// pressEvent = QMouseEvent(QEvent::MouseButtonDblClick, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, 0); - -// QApplication::sendEvent(canvas, &pressEvent); -// QApplication::sendEvent(canvas, &releaseEvent); - -// QCOMPARE(canvas->rootObject()->property("presses").toInt(), 0); -// QCOMPARE(canvas->rootObject()->property("clicks").toInt(), 2); -// QCOMPARE(canvas->rootObject()->property("doubleClicks").toInt(), 1); -// QCOMPARE(canvas->rootObject()->property("pressAndHolds").toInt(), 1); - -// delete canvas; -//} - -//void tst_QSGMouseArea::testQtQuick11Attributes() -//{ -// QFETCH(QString, code); -// QFETCH(QString, warning); -// QFETCH(QString, error); - -// QDeclarativeEngine engine; -// QObject *obj; - -// QDeclarativeComponent valid(&engine); -// valid.setData("import QtQuick 1.1; MouseArea { " + code.toUtf8() + " }", QUrl("")); -// obj = valid.create(); -// QVERIFY(obj); -// QVERIFY(valid.errorString().isEmpty()); -// delete obj; - -// QDeclarativeComponent invalid(&engine); -// invalid.setData("import QtQuick 1.0; MouseArea { " + code.toUtf8() + " }", QUrl("")); -// QTest::ignoreMessage(QtWarningMsg, warning.toUtf8()); -// obj = invalid.create(); -// QCOMPARE(invalid.errorString(), error); -// delete obj; -//} - -//void tst_QSGMouseArea::testQtQuick11Attributes_data() -//{ -// QTest::addColumn("code"); -// QTest::addColumn("warning"); -// QTest::addColumn("error"); - -// QTest::newRow("preventStealing") << "preventStealing: true" -// << "QDeclarativeComponent: Component is not ready" -// << ":1 \"MouseArea.preventStealing\" is not available in QtQuick 1.0.\n"; -//} - -//void tst_QSGMouseArea::hoverPosition() -//{ -// QSGView *canvas = createView(); -// canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/hoverPosition.qml")); - -// QSGItem *root = canvas->rootObject(); -// QVERIFY(root != 0); - -// QCOMPARE(root->property("mouseX").toReal(), qreal(0)); -// QCOMPARE(root->property("mouseY").toReal(), qreal(0)); - -// QMouseEvent moveEvent(QEvent::MouseMove, QPoint(10, 32), Qt::NoButton, Qt::NoButton, 0); -// QApplication::sendEvent(canvas, &moveEvent); - -//#ifdef Q_WS_QPA -// QEXPECT_FAIL("", "QTBUG-21008 fails", Abort); -//#endif -// QCOMPARE(root->property("mouseX").toReal(), qreal(10)); -// QCOMPARE(root->property("mouseY").toReal(), qreal(32)); - -// delete canvas; -//} - -//void tst_QSGMouseArea::hoverPropagation() -//{ -// //QTBUG-18175, to behave like GV did. -// QSGView *canvas = createView(); -// canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/hoverPropagation.qml")); - -// QSGItem *root = canvas->rootObject(); -// QVERIFY(root != 0); - -// QCOMPARE(root->property("point1").toBool(), false); -// QCOMPARE(root->property("point2").toBool(), false); - -// QMouseEvent moveEvent(QEvent::MouseMove, QPoint(32, 32), Qt::NoButton, Qt::NoButton, 0); -// QApplication::sendEvent(canvas, &moveEvent); -//#ifdef Q_WS_QPA -// QEXPECT_FAIL("", "QTBUG-21008 fails", Abort); -//#endif -// QCOMPARE(root->property("point1").toBool(), true); -// QCOMPARE(root->property("point2").toBool(), false); - -// QMouseEvent moveEvent2(QEvent::MouseMove, QPoint(232, 32), Qt::NoButton, Qt::NoButton, 0); -// QApplication::sendEvent(canvas, &moveEvent2); -// QCOMPARE(root->property("point1").toBool(), false); -// QCOMPARE(root->property("point2").toBool(), true); - -// delete canvas; -//} + QApplication::sendEvent(canvas, &pressEvent); + QTest::qWait(1000); + QApplication::sendEvent(canvas, &releaseEvent); + + QCOMPARE(canvas->rootObject()->property("presses").toInt(), 0); + QCOMPARE(canvas->rootObject()->property("clicks").toInt(), 1); + QCOMPARE(canvas->rootObject()->property("pressAndHolds").toInt(), 1); + + QApplication::sendEvent(canvas, &pressEvent); + QApplication::sendEvent(canvas, &releaseEvent); + pressEvent = QMouseEvent(QEvent::MouseButtonDblClick, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, 0); + + QApplication::sendEvent(canvas, &pressEvent); + QApplication::sendEvent(canvas, &releaseEvent); + + QCOMPARE(canvas->rootObject()->property("presses").toInt(), 0); + QCOMPARE(canvas->rootObject()->property("clicks").toInt(), 2); + QCOMPARE(canvas->rootObject()->property("doubleClicks").toInt(), 1); + QCOMPARE(canvas->rootObject()->property("pressAndHolds").toInt(), 1); + + delete canvas; + + //With handlers defined click, doubleClick and PressAndHold should propagate only when explicitly ignored + canvas = createView(); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/clickThrough2.qml")); + canvas->show(); + canvas->requestActivateWindow(); + QVERIFY(canvas->rootObject() != 0); + + pressEvent = QMouseEvent(QEvent::MouseButtonPress, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, 0); + QApplication::sendEvent(canvas, &pressEvent); + + releaseEvent = QMouseEvent(QEvent::MouseButtonRelease, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, 0); + QApplication::sendEvent(canvas, &releaseEvent); + + QCOMPARE(canvas->rootObject()->property("presses").toInt(), 0); + QCOMPARE(canvas->rootObject()->property("clicks").toInt(), 0); + + QApplication::sendEvent(canvas, &pressEvent); + QTest::qWait(1000); + QApplication::sendEvent(canvas, &releaseEvent); + + QCOMPARE(canvas->rootObject()->property("presses").toInt(), 0); + QCOMPARE(canvas->rootObject()->property("clicks").toInt(), 0); + QCOMPARE(canvas->rootObject()->property("pressAndHolds").toInt(), 0); + + QApplication::sendEvent(canvas, &pressEvent); + QApplication::sendEvent(canvas, &releaseEvent); + + pressEvent = QMouseEvent(QEvent::MouseButtonDblClick, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, 0); + QApplication::sendEvent(canvas, &pressEvent); + QApplication::sendEvent(canvas, &releaseEvent); + + QCOMPARE(canvas->rootObject()->property("presses").toInt(), 0); + QCOMPARE(canvas->rootObject()->property("clicks").toInt(), 0); + QCOMPARE(canvas->rootObject()->property("doubleClicks").toInt(), 0); + QCOMPARE(canvas->rootObject()->property("pressAndHolds").toInt(), 0); + + canvas->rootObject()->setProperty("letThrough", QVariant(true)); + + pressEvent = QMouseEvent(QEvent::MouseButtonPress, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, 0); + QApplication::sendEvent(canvas, &pressEvent); + + releaseEvent = QMouseEvent(QEvent::MouseButtonRelease, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, 0); + QApplication::sendEvent(canvas, &releaseEvent); + + QCOMPARE(canvas->rootObject()->property("presses").toInt(), 0); + QCOMPARE(canvas->rootObject()->property("clicks").toInt(), 1); + + QApplication::sendEvent(canvas, &pressEvent); + QTest::qWait(1000); + QApplication::sendEvent(canvas, &releaseEvent); + + QCOMPARE(canvas->rootObject()->property("presses").toInt(), 0); + QCOMPARE(canvas->rootObject()->property("clicks").toInt(), 1); + QCOMPARE(canvas->rootObject()->property("pressAndHolds").toInt(), 1); + + QApplication::sendEvent(canvas, &pressEvent); + QApplication::sendEvent(canvas, &releaseEvent); + pressEvent = QMouseEvent(QEvent::MouseButtonDblClick, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, 0); + + QApplication::sendEvent(canvas, &pressEvent); + QApplication::sendEvent(canvas, &releaseEvent); + + QCOMPARE(canvas->rootObject()->property("presses").toInt(), 0); + QCOMPARE(canvas->rootObject()->property("clicks").toInt(), 2); + QCOMPARE(canvas->rootObject()->property("doubleClicks").toInt(), 1); + QCOMPARE(canvas->rootObject()->property("pressAndHolds").toInt(), 1); + + delete canvas; +} + +void tst_QSGMouseArea::testQtQuick11Attributes() +{ + QFETCH(QString, code); + QFETCH(QString, warning); + QFETCH(QString, error); + + QDeclarativeEngine engine; + QObject *obj; + + QDeclarativeComponent valid(&engine); + valid.setData("import QtQuick 1.1; MouseArea { " + code.toUtf8() + " }", QUrl("")); + obj = valid.create(); + QVERIFY(obj); + QVERIFY(valid.errorString().isEmpty()); + delete obj; + + QDeclarativeComponent invalid(&engine); + invalid.setData("import QtQuick 1.0; MouseArea { " + code.toUtf8() + " }", QUrl("")); + QTest::ignoreMessage(QtWarningMsg, warning.toUtf8()); + obj = invalid.create(); + QCOMPARE(invalid.errorString(), error); + delete obj; +} + +void tst_QSGMouseArea::testQtQuick11Attributes_data() +{ + QTest::addColumn("code"); + QTest::addColumn("warning"); + QTest::addColumn("error"); + + QTest::newRow("preventStealing") << "preventStealing: true" + << "QDeclarativeComponent: Component is not ready" + << ":1 \"MouseArea.preventStealing\" is not available in QtQuick 1.0.\n"; +} + +void tst_QSGMouseArea::hoverPosition() +{ + QSGView *canvas = createView(); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/hoverPosition.qml")); + + QSGItem *root = canvas->rootObject(); + QVERIFY(root != 0); + + QCOMPARE(root->property("mouseX").toReal(), qreal(0)); + QCOMPARE(root->property("mouseY").toReal(), qreal(0)); + + QMouseEvent moveEvent(QEvent::MouseMove, QPoint(10, 32), Qt::NoButton, Qt::NoButton, 0); + QApplication::sendEvent(canvas, &moveEvent); + +#ifdef Q_WS_QPA + QEXPECT_FAIL("", "QTBUG-21008 fails", Abort); +#endif + QCOMPARE(root->property("mouseX").toReal(), qreal(10)); + QCOMPARE(root->property("mouseY").toReal(), qreal(32)); + + delete canvas; +} + +void tst_QSGMouseArea::hoverPropagation() +{ + //QTBUG-18175, to behave like GV did. + QSGView *canvas = createView(); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/hoverPropagation.qml")); + + QSGItem *root = canvas->rootObject(); + QVERIFY(root != 0); + + QCOMPARE(root->property("point1").toBool(), false); + QCOMPARE(root->property("point2").toBool(), false); + + QMouseEvent moveEvent(QEvent::MouseMove, QPoint(32, 32), Qt::NoButton, Qt::NoButton, 0); + QApplication::sendEvent(canvas, &moveEvent); +#ifdef Q_WS_QPA + QEXPECT_FAIL("", "QTBUG-21008 fails", Abort); +#endif + QCOMPARE(root->property("point1").toBool(), true); + QCOMPARE(root->property("point2").toBool(), false); + + QMouseEvent moveEvent2(QEvent::MouseMove, QPoint(232, 32), Qt::NoButton, Qt::NoButton, 0); + QApplication::sendEvent(canvas, &moveEvent2); + QCOMPARE(root->property("point1").toBool(), false); + QCOMPARE(root->property("point2").toBool(), true); + + delete canvas; +} QTEST_MAIN(tst_QSGMouseArea) -- cgit v1.2.3