aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/qtquick1/qdeclarativemousearea/tst_qdeclarativemousearea.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/qtquick1/qdeclarativemousearea/tst_qdeclarativemousearea.cpp')
-rw-r--r--tests/auto/qtquick1/qdeclarativemousearea/tst_qdeclarativemousearea.cpp700
1 files changed, 0 insertions, 700 deletions
diff --git a/tests/auto/qtquick1/qdeclarativemousearea/tst_qdeclarativemousearea.cpp b/tests/auto/qtquick1/qdeclarativemousearea/tst_qdeclarativemousearea.cpp
deleted file mode 100644
index 4715293fd4..0000000000
--- a/tests/auto/qtquick1/qdeclarativemousearea/tst_qdeclarativemousearea.cpp
+++ /dev/null
@@ -1,700 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QtTest/QtTest>
-#include <QtTest/QSignalSpy>
-#include <QtQuick1/private/qdeclarativemousearea_p.h>
-#include <QtQuick1/private/qdeclarativerectangle_p.h>
-#include <QtQuick1/private/qdeclarativeflickable_p.h>
-#include <QtQuick1/qdeclarativeview.h>
-#include <QtDeclarative/qdeclarativecontext.h>
-#include <QtDeclarative/qdeclarativeengine.h>
-#include <QtDeclarative/qdeclarativeproperty.h>
-
-class tst_QDeclarative1MouseArea: public QObject
-{
- Q_OBJECT
-private slots:
- void dragProperties();
- void resetDrag();
- void dragging();
- void updateMouseAreaPosOnClick();
- void updateMouseAreaPosOnResize();
- void noOnClickedWithPressAndHold();
- void onMousePressRejected();
- void doubleClick();
- void clickTwice();
- void pressedOrdering();
- void preventStealing();
- void testQtQuick11Attributes();
- void testQtQuick11Attributes_data();
-#ifndef QT_NO_CONTEXTMENU
- void preventContextMenu();
-#endif // QT_NO_CONTEXTMENU
-
-private:
- QDeclarativeView *createView();
-};
-
-void tst_QDeclarative1MouseArea::dragProperties()
-{
- QDeclarativeView *canvas = createView();
- canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/dragproperties.qml"));
- canvas->show();
- canvas->setFocus();
- QVERIFY(canvas->rootObject() != 0);
-
- QDeclarative1MouseArea *mouseRegion = canvas->rootObject()->findChild<QDeclarative1MouseArea*>("mouseregion");
- QDeclarative1Drag *drag = mouseRegion->drag();
- QVERIFY(mouseRegion != 0);
- QVERIFY(drag != 0);
-
- // target
- QDeclarativeItem *blackRect = canvas->rootObject()->findChild<QDeclarativeItem*>("blackrect");
- QVERIFY(blackRect != 0);
- QVERIFY(blackRect == drag->target());
- QDeclarativeItem *rootItem = qobject_cast<QDeclarativeItem*>(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(), QDeclarative1Drag::XandYAxis);
- QSignalSpy axisSpy(drag, SIGNAL(axisChanged()));
- drag->setAxis(QDeclarative1Drag::XAxis);
- QCOMPARE(drag->axis(), QDeclarative1Drag::XAxis);
- QCOMPARE(axisSpy.count(),1);
- drag->setAxis(QDeclarative1Drag::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_QDeclarative1MouseArea::resetDrag()
-{
- QDeclarativeView *canvas = createView();
-
- canvas->rootContext()->setContextProperty("haveTarget", QVariant(true));
- canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/dragreset.qml"));
- canvas->show();
- canvas->setFocus();
- QVERIFY(canvas->rootObject() != 0);
-
- QDeclarative1MouseArea *mouseRegion = canvas->rootObject()->findChild<QDeclarative1MouseArea*>("mouseregion");
- QDeclarative1Drag *drag = mouseRegion->drag();
- QVERIFY(mouseRegion != 0);
- QVERIFY(drag != 0);
-
- // target
- QDeclarativeItem *blackRect = canvas->rootObject()->findChild<QDeclarativeItem*>("blackrect");
- QVERIFY(blackRect != 0);
- QVERIFY(blackRect == drag->target());
- QDeclarativeItem *rootItem = qobject_cast<QDeclarativeItem*>(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_QDeclarative1MouseArea::dragging()
-{
- QDeclarativeView *canvas = createView();
-
- canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/dragging.qml"));
- canvas->show();
- canvas->setFocus();
- QVERIFY(canvas->rootObject() != 0);
-
- QDeclarative1MouseArea *mouseRegion = canvas->rootObject()->findChild<QDeclarative1MouseArea*>("mouseregion");
- QDeclarative1Drag *drag = mouseRegion->drag();
- QVERIFY(mouseRegion != 0);
- QVERIFY(drag != 0);
-
- // target
- QDeclarativeItem *blackRect = canvas->rootObject()->findChild<QDeclarativeItem*>("blackrect");
- QVERIFY(blackRect != 0);
- QVERIFY(blackRect == drag->target());
-
- QVERIFY(!drag->active());
-
- QGraphicsScene *scene = canvas->scene();
- QGraphicsSceneMouseEvent pressEvent(QEvent::GraphicsSceneMousePress);
- pressEvent.setScenePos(QPointF(100, 100));
- pressEvent.setButton(Qt::LeftButton);
- pressEvent.setButtons(Qt::LeftButton);
- QApplication::sendEvent(scene, &pressEvent);
-
- QVERIFY(!drag->active());
- QCOMPARE(blackRect->x(), 50.0);
- QCOMPARE(blackRect->y(), 50.0);
-
- // First move event triggers drag, second is acted upon.
- // This is due to possibility of higher stacked area taking precedence.
- QGraphicsSceneMouseEvent moveEvent(QEvent::GraphicsSceneMouseMove);
- moveEvent.setScenePos(QPointF(106, 106));
- moveEvent.setButton(Qt::LeftButton);
- moveEvent.setButtons(Qt::LeftButton);
- QApplication::sendEvent(scene, &moveEvent);
-
- moveEvent.setScenePos(QPointF(110, 110));
- moveEvent.setButton(Qt::LeftButton);
- moveEvent.setButtons(Qt::LeftButton);
- QApplication::sendEvent(scene, &moveEvent);
-
- QVERIFY(drag->active());
- QCOMPARE(blackRect->x(), 60.0);
- QCOMPARE(blackRect->y(), 60.0);
-
- QGraphicsSceneMouseEvent releaseEvent(QEvent::GraphicsSceneMouseRelease);
- releaseEvent.setScenePos(QPointF(110, 110));
- releaseEvent.setButton(Qt::LeftButton);
- releaseEvent.setButtons(Qt::LeftButton);
- QApplication::sendEvent(scene, &releaseEvent);
-
- QVERIFY(!drag->active());
- QCOMPARE(blackRect->x(), 60.0);
- QCOMPARE(blackRect->y(), 60.0);
-
- delete canvas;
-}
-
-QDeclarativeView *tst_QDeclarative1MouseArea::createView()
-{
- QDeclarativeView *canvas = new QDeclarativeView(0);
- canvas->setFixedSize(240,320);
-
- return canvas;
-}
-
-void tst_QDeclarative1MouseArea::updateMouseAreaPosOnClick()
-{
- QDeclarativeView *canvas = createView();
- canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/updateMousePosOnClick.qml"));
- canvas->show();
- canvas->setFocus();
- QVERIFY(canvas->rootObject() != 0);
-
- QDeclarative1MouseArea *mouseRegion = canvas->rootObject()->findChild<QDeclarative1MouseArea*>("mouseregion");
- QVERIFY(mouseRegion != 0);
-
- QDeclarative1Rectangle *rect = canvas->rootObject()->findChild<QDeclarative1Rectangle*>("ball");
- QVERIFY(rect != 0);
-
- QCOMPARE(mouseRegion->mouseX(), rect->x());
- QCOMPARE(mouseRegion->mouseY(), rect->y());
-
- QGraphicsScene *scene = canvas->scene();
- QGraphicsSceneMouseEvent event(QEvent::GraphicsSceneMousePress);
- event.setScenePos(QPointF(100, 100));
- event.setButton(Qt::LeftButton);
- event.setButtons(Qt::LeftButton);
- QApplication::sendEvent(scene, &event);
-
- QCOMPARE(mouseRegion->mouseX(), 100.0);
- QCOMPARE(mouseRegion->mouseY(), 100.0);
-
- QCOMPARE(mouseRegion->mouseX(), rect->x());
- QCOMPARE(mouseRegion->mouseY(), rect->y());
-
- delete canvas;
-}
-
-void tst_QDeclarative1MouseArea::updateMouseAreaPosOnResize()
-{
- QDeclarativeView *canvas = createView();
- canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/updateMousePosOnResize.qml"));
- canvas->show();
- canvas->setFocus();
- QVERIFY(canvas->rootObject() != 0);
-
- QDeclarative1MouseArea *mouseRegion = canvas->rootObject()->findChild<QDeclarative1MouseArea*>("mouseregion");
- QVERIFY(mouseRegion != 0);
-
- QDeclarative1Rectangle *rect = canvas->rootObject()->findChild<QDeclarative1Rectangle*>("brother");
- QVERIFY(rect != 0);
-
- QCOMPARE(mouseRegion->mouseX(), 0.0);
- QCOMPARE(mouseRegion->mouseY(), 0.0);
-
- QGraphicsScene *scene = canvas->scene();
- QGraphicsSceneMouseEvent event(QEvent::GraphicsSceneMousePress);
- event.setScenePos(rect->pos());
- event.setButton(Qt::LeftButton);
- event.setButtons(Qt::LeftButton);
- QApplication::sendEvent(scene, &event);
-
- QVERIFY(!mouseRegion->property("emitPositionChanged").toBool());
- QVERIFY(mouseRegion->property("mouseMatchesPos").toBool());
-
- 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());
-
- QCOMPARE(mouseRegion->mouseX(), rect->x());
- QCOMPARE(mouseRegion->mouseY(), rect->y());
-
- delete canvas;
-}
-
-void tst_QDeclarative1MouseArea::noOnClickedWithPressAndHold()
-{
- QDeclarativeView *canvas = createView();
- canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/clickandhold.qml"));
- canvas->show();
- canvas->setFocus();
- QVERIFY(canvas->rootObject() != 0);
-
- QGraphicsScene *scene = canvas->scene();
- QGraphicsSceneMouseEvent pressEvent(QEvent::GraphicsSceneMousePress);
- pressEvent.setScenePos(QPointF(100, 100));
- pressEvent.setButton(Qt::LeftButton);
- pressEvent.setButtons(Qt::LeftButton);
- QApplication::sendEvent(scene, &pressEvent);
-
- QVERIFY(!canvas->rootObject()->property("clicked").toBool());
- QVERIFY(!canvas->rootObject()->property("held").toBool());
-
- QTest::qWait(1000);
-
- QGraphicsSceneMouseEvent releaseEvent(QEvent::GraphicsSceneMouseRelease);
- releaseEvent.setScenePos(QPointF(100, 100));
- releaseEvent.setButton(Qt::LeftButton);
- releaseEvent.setButtons(Qt::LeftButton);
- QApplication::sendEvent(scene, &releaseEvent);
-
- QVERIFY(!canvas->rootObject()->property("clicked").toBool());
- QVERIFY(canvas->rootObject()->property("held").toBool());
-
- delete canvas;
-}
-
-void tst_QDeclarative1MouseArea::onMousePressRejected()
-{
- QDeclarativeView *canvas = createView();
- canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/rejectEvent.qml"));
- canvas->show();
- canvas->setFocus();
- 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());
-
- QGraphicsScene *scene = canvas->scene();
- QGraphicsSceneMouseEvent pressEvent(QEvent::GraphicsSceneMousePress);
- pressEvent.setScenePos(QPointF(100, 100));
- pressEvent.setButton(Qt::LeftButton);
- pressEvent.setButtons(Qt::LeftButton);
- QApplication::sendEvent(scene, &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);
-
- QGraphicsSceneMouseEvent releaseEvent(QEvent::GraphicsSceneMouseRelease);
- releaseEvent.setScenePos(QPointF(100, 100));
- releaseEvent.setButton(Qt::LeftButton);
- releaseEvent.setButtons(Qt::LeftButton);
- QApplication::sendEvent(scene, &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_QDeclarative1MouseArea::doubleClick()
-{
- QDeclarativeView *canvas = createView();
- canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/doubleclick.qml"));
- canvas->show();
- canvas->setFocus();
- QVERIFY(canvas->rootObject() != 0);
-
- QGraphicsScene *scene = canvas->scene();
- QGraphicsSceneMouseEvent pressEvent(QEvent::GraphicsSceneMousePress);
- pressEvent.setScenePos(QPointF(100, 100));
- pressEvent.setButton(Qt::LeftButton);
- pressEvent.setButtons(Qt::LeftButton);
- QApplication::sendEvent(scene, &pressEvent);
-
- QGraphicsSceneMouseEvent releaseEvent(QEvent::GraphicsSceneMouseRelease);
- releaseEvent.setScenePos(QPointF(100, 100));
- releaseEvent.setButton(Qt::LeftButton);
- releaseEvent.setButtons(Qt::LeftButton);
- QApplication::sendEvent(scene, &releaseEvent);
-
- QCOMPARE(canvas->rootObject()->property("released").toInt(), 1);
-
- QGraphicsSceneMouseEvent dblClickEvent(QEvent::GraphicsSceneMouseDoubleClick);
- dblClickEvent.setScenePos(QPointF(100, 100));
- dblClickEvent.setButton(Qt::LeftButton);
- dblClickEvent.setButtons(Qt::LeftButton);
- QApplication::sendEvent(scene, &dblClickEvent);
-
- QApplication::sendEvent(scene, &releaseEvent);
-
- QCOMPARE(canvas->rootObject()->property("clicked").toInt(), 1);
- QCOMPARE(canvas->rootObject()->property("doubleClicked").toInt(), 1);
- QCOMPARE(canvas->rootObject()->property("released").toInt(), 2);
-
- delete canvas;
-}
-
-// QTBUG-14832
-void tst_QDeclarative1MouseArea::clickTwice()
-{
- QDeclarativeView *canvas = createView();
- canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/clicktwice.qml"));
- canvas->show();
- canvas->setFocus();
- QVERIFY(canvas->rootObject() != 0);
-
- QGraphicsScene *scene = canvas->scene();
- QGraphicsSceneMouseEvent pressEvent(QEvent::GraphicsSceneMousePress);
- pressEvent.setScenePos(QPointF(100, 100));
- pressEvent.setButton(Qt::LeftButton);
- pressEvent.setButtons(Qt::LeftButton);
- QApplication::sendEvent(scene, &pressEvent);
-
- QGraphicsSceneMouseEvent releaseEvent(QEvent::GraphicsSceneMouseRelease);
- releaseEvent.setScenePos(QPointF(100, 100));
- releaseEvent.setButton(Qt::LeftButton);
- releaseEvent.setButtons(Qt::LeftButton);
- QApplication::sendEvent(scene, &releaseEvent);
-
- QCOMPARE(canvas->rootObject()->property("pressed").toInt(), 1);
- QCOMPARE(canvas->rootObject()->property("released").toInt(), 1);
- QCOMPARE(canvas->rootObject()->property("clicked").toInt(), 1);
-
- QGraphicsSceneMouseEvent dblClickEvent(QEvent::GraphicsSceneMouseDoubleClick);
- dblClickEvent.setScenePos(QPointF(100, 100));
- dblClickEvent.setButton(Qt::LeftButton);
- dblClickEvent.setButtons(Qt::LeftButton);
- QApplication::sendEvent(scene, &dblClickEvent);
-
- QApplication::sendEvent(scene, &pressEvent);
- QApplication::sendEvent(scene, &releaseEvent);
-
- QCOMPARE(canvas->rootObject()->property("pressed").toInt(), 2);
- QCOMPARE(canvas->rootObject()->property("released").toInt(), 2);
- QCOMPARE(canvas->rootObject()->property("clicked").toInt(), 2);
-
- delete canvas;
-}
-
-void tst_QDeclarative1MouseArea::pressedOrdering()
-{
- QDeclarativeView *canvas = createView();
- canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/pressedOrdering.qml"));
- canvas->show();
- canvas->setFocus();
- QVERIFY(canvas->rootObject() != 0);
-
- QCOMPARE(canvas->rootObject()->property("value").toString(), QLatin1String("base"));
-
- QGraphicsScene *scene = canvas->scene();
- QGraphicsSceneMouseEvent pressEvent(QEvent::GraphicsSceneMousePress);
- pressEvent.setScenePos(QPointF(100, 100));
- pressEvent.setButton(Qt::LeftButton);
- pressEvent.setButtons(Qt::LeftButton);
- QApplication::sendEvent(scene, &pressEvent);
-
- QCOMPARE(canvas->rootObject()->property("value").toString(), QLatin1String("pressed"));
-
- QGraphicsSceneMouseEvent releaseEvent(QEvent::GraphicsSceneMouseRelease);
- releaseEvent.setScenePos(QPointF(100, 100));
- releaseEvent.setButton(Qt::LeftButton);
- releaseEvent.setButtons(Qt::LeftButton);
- QApplication::sendEvent(scene, &releaseEvent);
-
- QCOMPARE(canvas->rootObject()->property("value").toString(), QLatin1String("toggled"));
-
- QApplication::sendEvent(scene, &pressEvent);
-
- QCOMPARE(canvas->rootObject()->property("value").toString(), QLatin1String("pressed"));
-
- delete canvas;
-}
-
-void tst_QDeclarative1MouseArea::preventStealing()
-{
- QDeclarativeView *canvas = createView();
-
- canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/preventstealing.qml"));
- canvas->show();
- canvas->setFocus();
- QVERIFY(canvas->rootObject() != 0);
-
- QDeclarative1Flickable *flickable = qobject_cast<QDeclarative1Flickable*>(canvas->rootObject());
- QVERIFY(flickable != 0);
-
- QDeclarative1MouseArea *mouseArea = canvas->rootObject()->findChild<QDeclarative1MouseArea*>("mousearea");
- QVERIFY(mouseArea != 0);
-
- QSignalSpy mousePositionSpy(mouseArea, SIGNAL(positionChanged(QDeclarative1MouseEvent*)));
-
- QTest::mousePress(canvas->viewport(), Qt::LeftButton, 0, canvas->mapFromScene(QPoint(80, 80)));
-
- // Without preventStealing, mouse movement over MouseArea would
- // cause the Flickable to steal mouse and trigger content movement.
- QGraphicsScene *scene = canvas->scene();
- QGraphicsSceneMouseEvent moveEvent(QEvent::GraphicsSceneMouseMove);
- moveEvent.setScenePos(QPointF(70, 70));
- moveEvent.setButton(Qt::LeftButton);
- moveEvent.setButtons(Qt::LeftButton);
- QApplication::sendEvent(scene, &moveEvent);
-
- moveEvent.setScenePos(QPointF(60, 60));
- moveEvent.setButton(Qt::LeftButton);
- moveEvent.setButtons(Qt::LeftButton);
- QApplication::sendEvent(scene, &moveEvent);
-
- moveEvent.setScenePos(QPointF(50, 50));
- moveEvent.setButton(Qt::LeftButton);
- moveEvent.setButtons(Qt::LeftButton);
- QApplication::sendEvent(scene, &moveEvent);
-
- // We should have received all three move events
- QCOMPARE(mousePositionSpy.count(), 3);
- QVERIFY(mouseArea->pressed());
-
- // Flickable content should not have moved.
- QCOMPARE(flickable->contentX(), 0.);
- QCOMPARE(flickable->contentY(), 0.);
-
- QTest::mouseRelease(canvas->viewport(), Qt::LeftButton, 0, canvas->mapFromScene(QPoint(50, 50)));
-
- // Now allow stealing and confirm Flickable does its thing.
- canvas->rootObject()->setProperty("stealing", false);
-
- QTest::mousePress(canvas->viewport(), Qt::LeftButton, 0, canvas->mapFromScene(QPoint(80, 80)));
-
- // Without preventStealing, mouse movement over MouseArea would
- // cause the Flickable to steal mouse and trigger content movement.
- moveEvent.setScenePos(QPointF(70, 70));
- QApplication::sendEvent(scene, &moveEvent);
-
- moveEvent.setScenePos(QPointF(60, 60));
- QApplication::sendEvent(scene, &moveEvent);
-
- moveEvent.setScenePos(QPointF(50, 50));
- QApplication::sendEvent(scene, &moveEvent);
-
- // We should only have received the first move event
- QCOMPARE(mousePositionSpy.count(), 4);
- // Our press should be taken away
- QVERIFY(!mouseArea->pressed());
-
- // Flickable content should have moved.
- QCOMPARE(flickable->contentX(), 10.);
- QCOMPARE(flickable->contentY(), 10.);
-
- QTest::mouseRelease(canvas->viewport(), Qt::LeftButton, 0, canvas->mapFromScene(QPoint(50, 50)));
-
- delete canvas;
-}
-
-void tst_QDeclarative1MouseArea::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_QDeclarative1MouseArea::testQtQuick11Attributes_data()
-{
- QTest::addColumn<QString>("code");
- QTest::addColumn<QString>("warning");
- QTest::addColumn<QString>("error");
-
- QTest::newRow("preventStealing") << "preventStealing: true"
- << "QDeclarativeComponent: Component is not ready"
- << ":1 \"MouseArea.preventStealing\" is not available in QtQuick 1.0.\n";
-}
-
-#ifndef QT_NO_CONTEXTMENU
-class ContextMenuEventReceiver : public QDeclarativeItem
-{
- Q_OBJECT
- Q_PROPERTY(int eventCount READ eventCount NOTIFY eventCountChanged);
-public:
- ContextMenuEventReceiver(QDeclarativeItem *parent = 0) : QDeclarativeItem(parent), m_eventCount(0) { }
- int eventCount() const { return m_eventCount; }
-signals:
- void eventCountChanged(int);
-protected:
- void contextMenuEvent(QGraphicsSceneContextMenuEvent *event) {
- if (event->reason() == QGraphicsSceneContextMenuEvent::Mouse) {
- m_eventCount++;
- emit eventCountChanged(m_eventCount);
- }
- }
-private:
- int m_eventCount;
-};
-
-void tst_QDeclarative1MouseArea::preventContextMenu()
-{
- // A MouseArea accepting Left, Middle and Right buttons should prevent context menu
- // events with "Mouse" reason to hit the Item below.
-
- qmlRegisterType<ContextMenuEventReceiver>("Test", 1, 0, "ContextMenuEventReceiver");
-
- QDeclarativeView *view = createView();
- view->setSource(QUrl::fromLocalFile(SRCDIR "/data/preventContextMenu.qml"));
- view->show();
- QVERIFY(view->rootObject() != 0);
-
- QDeclarativeProperty mouseAreaEnabled(view->rootObject(), "mouseAreaEnabled");
- QVERIFY(mouseAreaEnabled.read().toBool());
-
- QDeclarativeProperty eventsReceived(view->rootObject(), "eventsReceived");
- QCOMPARE(eventsReceived.read().toInt(), 0);
-
- QPoint targetPoint = view->mapFromScene(QPoint(80, 80));
-
- QContextMenuEvent fakeEvent1(QContextMenuEvent::Mouse, targetPoint);
- QApplication::sendEvent(view->viewport(), &fakeEvent1);
- QCOMPARE(eventsReceived.read().toInt(), 0);
-
- mouseAreaEnabled.write(false);
- QVERIFY(!mouseAreaEnabled.read().toBool());
- QContextMenuEvent fakeEvent2(QContextMenuEvent::Mouse, targetPoint);
- QApplication::sendEvent(view->viewport(), &fakeEvent2);
- QCOMPARE(eventsReceived.read().toInt(), 1);
-
- mouseAreaEnabled.write(true);
- QVERIFY(mouseAreaEnabled.read().toBool());
- QContextMenuEvent fakeEvent3(QContextMenuEvent::Mouse, targetPoint);
- QApplication::sendEvent(view->viewport(), &fakeEvent3);
- QCOMPARE(eventsReceived.read().toInt(), 1);
-}
-#endif // QT_NO_CONTEXTMENU
-
-QTEST_MAIN(tst_QDeclarative1MouseArea)
-
-#include "tst_qdeclarativemousearea.moc"