aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/declarative/qdeclarativemousearea
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/declarative/qdeclarativemousearea')
-rw-r--r--tests/auto/declarative/qdeclarativemousearea/data/clickandhold.qml13
-rw-r--r--tests/auto/declarative/qdeclarativemousearea/data/clicktwice.qml16
-rw-r--r--tests/auto/declarative/qdeclarativemousearea/data/doubleclick.qml16
-rw-r--r--tests/auto/declarative/qdeclarativemousearea/data/dragging.qml28
-rw-r--r--tests/auto/declarative/qdeclarativemousearea/data/dragproperties.qml28
-rw-r--r--tests/auto/declarative/qdeclarativemousearea/data/dragreset.qml28
-rw-r--r--tests/auto/declarative/qdeclarativemousearea/data/pressedOrdering.qml28
-rw-r--r--tests/auto/declarative/qdeclarativemousearea/data/preventContextMenu.qml22
-rw-r--r--tests/auto/declarative/qdeclarativemousearea/data/preventstealing.qml24
-rw-r--r--tests/auto/declarative/qdeclarativemousearea/data/rejectEvent.qml28
-rw-r--r--tests/auto/declarative/qdeclarativemousearea/data/updateMousePosOnClick.qml20
-rw-r--r--tests/auto/declarative/qdeclarativemousearea/data/updateMousePosOnResize.qml38
-rw-r--r--tests/auto/declarative/qdeclarativemousearea/qdeclarativemousearea.pro18
-rw-r--r--tests/auto/declarative/qdeclarativemousearea/tst_qdeclarativemousearea.cpp705
14 files changed, 0 insertions, 1012 deletions
diff --git a/tests/auto/declarative/qdeclarativemousearea/data/clickandhold.qml b/tests/auto/declarative/qdeclarativemousearea/data/clickandhold.qml
deleted file mode 100644
index a6409e2e31..0000000000
--- a/tests/auto/declarative/qdeclarativemousearea/data/clickandhold.qml
+++ /dev/null
@@ -1,13 +0,0 @@
-import QtQuick 1.0
-
-Item {
- id: root
- property bool clicked: false
- property bool held: false
-
- MouseArea {
- width: 200; height: 200
- onClicked: { root.clicked = true }
- onPressAndHold: { root.held = true }
- }
-}
diff --git a/tests/auto/declarative/qdeclarativemousearea/data/clicktwice.qml b/tests/auto/declarative/qdeclarativemousearea/data/clicktwice.qml
deleted file mode 100644
index c6b1f8992a..0000000000
--- a/tests/auto/declarative/qdeclarativemousearea/data/clicktwice.qml
+++ /dev/null
@@ -1,16 +0,0 @@
-import QtQuick 1.0
-
-Item {
- id: root
- property int clicked: 0
- property int pressed: 0
- property int released: 0
-
- MouseArea {
- width: 200; height: 200
- onPressed: { root.pressed++ }
- onClicked: { root.clicked++ }
- onReleased: { root.released++ }
- }
-}
-
diff --git a/tests/auto/declarative/qdeclarativemousearea/data/doubleclick.qml b/tests/auto/declarative/qdeclarativemousearea/data/doubleclick.qml
deleted file mode 100644
index 55b0812e48..0000000000
--- a/tests/auto/declarative/qdeclarativemousearea/data/doubleclick.qml
+++ /dev/null
@@ -1,16 +0,0 @@
-import QtQuick 1.0
-
-Item {
- id: root
- property int clicked: 0
- property int doubleClicked: 0
- property int released: 0
-
- MouseArea {
- width: 200; height: 200
- onClicked: { root.clicked++ }
- onDoubleClicked: { root.doubleClicked++ }
- onReleased: { root.released++ }
- }
-}
-
diff --git a/tests/auto/declarative/qdeclarativemousearea/data/dragging.qml b/tests/auto/declarative/qdeclarativemousearea/data/dragging.qml
deleted file mode 100644
index dd89efb5ab..0000000000
--- a/tests/auto/declarative/qdeclarativemousearea/data/dragging.qml
+++ /dev/null
@@ -1,28 +0,0 @@
-import QtQuick 1.0
-Rectangle {
- id: whiteRect
- width: 200
- height: 200
- color: "white"
- Rectangle {
- id: blackRect
- objectName: "blackrect"
- color: "black"
- y: 50
- x: 50
- width: 100
- height: 100
- opacity: (whiteRect.width-blackRect.x+whiteRect.height-blackRect.y-199)/200
- Text { text: blackRect.opacity}
- MouseArea {
- objectName: "mouseregion"
- anchors.fill: parent
- drag.target: blackRect
- drag.axis: Drag.XandYAxis
- drag.minimumX: 0
- drag.maximumX: whiteRect.width-blackRect.width
- drag.minimumY: 0
- drag.maximumY: whiteRect.height-blackRect.height
- }
- }
- }
diff --git a/tests/auto/declarative/qdeclarativemousearea/data/dragproperties.qml b/tests/auto/declarative/qdeclarativemousearea/data/dragproperties.qml
deleted file mode 100644
index 7baefd5ded..0000000000
--- a/tests/auto/declarative/qdeclarativemousearea/data/dragproperties.qml
+++ /dev/null
@@ -1,28 +0,0 @@
-import QtQuick 1.0
-Rectangle {
- id: whiteRect
- width: 200
- height: 200
- color: "white"
- Rectangle {
- id: blackRect
- objectName: "blackrect"
- color: "black"
- y: 50
- x: 50
- width: 100
- height: 100
- opacity: (whiteRect.width-blackRect.x+whiteRect.height-blackRect.y-199)/200
- Text { text: blackRect.opacity}
- MouseArea {
- objectName: "mouseregion"
- anchors.fill: parent
- drag.target: blackRect
- drag.axis: Drag.XandYAxis
- drag.minimumX: 0
- drag.maximumX: whiteRect.width-blackRect.width
- drag.minimumY: 0
- drag.maximumY: whiteRect.height-blackRect.height
- }
- }
- }
diff --git a/tests/auto/declarative/qdeclarativemousearea/data/dragreset.qml b/tests/auto/declarative/qdeclarativemousearea/data/dragreset.qml
deleted file mode 100644
index c6d2e204b2..0000000000
--- a/tests/auto/declarative/qdeclarativemousearea/data/dragreset.qml
+++ /dev/null
@@ -1,28 +0,0 @@
-import QtQuick 1.0
-Rectangle {
- id: whiteRect
- width: 200
- height: 200
- color: "white"
- Rectangle {
- id: blackRect
- objectName: "blackrect"
- color: "black"
- y: 50
- x: 50
- width: 100
- height: 100
- opacity: (whiteRect.width-blackRect.x+whiteRect.height-blackRect.y-199)/200
- Text { text: blackRect.opacity}
- MouseArea {
- objectName: "mouseregion"
- anchors.fill: parent
- drag.target: haveTarget ? blackRect : undefined
- drag.axis: Drag.XandYAxis
- drag.minimumX: 0
- drag.maximumX: whiteRect.width-blackRect.width
- drag.minimumY: 0
- drag.maximumY: whiteRect.height-blackRect.height
- }
- }
- }
diff --git a/tests/auto/declarative/qdeclarativemousearea/data/pressedOrdering.qml b/tests/auto/declarative/qdeclarativemousearea/data/pressedOrdering.qml
deleted file mode 100644
index 4a80e83465..0000000000
--- a/tests/auto/declarative/qdeclarativemousearea/data/pressedOrdering.qml
+++ /dev/null
@@ -1,28 +0,0 @@
-import QtQuick 1.0
-
-Item {
- id: root
- property string value: "base"
-
- MouseArea {
- id: mouseArea
- width: 200; height: 200
- onClicked: toggleState.state = "toggled"
- }
-
- StateGroup {
- states: State {
- name: "pressed"
- when: mouseArea.pressed
- PropertyChanges { target: root; value: "pressed" }
- }
- }
-
- StateGroup {
- id: toggleState
- states: State {
- name: "toggled"
- PropertyChanges { target: root; value: "toggled" }
- }
- }
-}
diff --git a/tests/auto/declarative/qdeclarativemousearea/data/preventContextMenu.qml b/tests/auto/declarative/qdeclarativemousearea/data/preventContextMenu.qml
deleted file mode 100644
index dcbb5d766e..0000000000
--- a/tests/auto/declarative/qdeclarativemousearea/data/preventContextMenu.qml
+++ /dev/null
@@ -1,22 +0,0 @@
-import QtQuick 1.1
-import Test 1.0
-
-Item {
- width: 200
- height: 200
-
- property alias mouseAreaEnabled: mouseArea.enabled
- property alias eventsReceived: receiver.eventCount
-
- ContextMenuEventReceiver {
- id: receiver
- anchors.fill: parent
- }
-
- MouseArea {
- id: mouseArea
- anchors.fill: parent
- acceptedButtons: Qt.LeftButton | Qt.MiddleButton | Qt.RightButton
- enabled: true
- }
-}
diff --git a/tests/auto/declarative/qdeclarativemousearea/data/preventstealing.qml b/tests/auto/declarative/qdeclarativemousearea/data/preventstealing.qml
deleted file mode 100644
index 11553fadaf..0000000000
--- a/tests/auto/declarative/qdeclarativemousearea/data/preventstealing.qml
+++ /dev/null
@@ -1,24 +0,0 @@
-import QtQuick 1.1
-
-Flickable {
- property bool stealing: true
- width: 200
- height: 200
- contentWidth: 400
- contentHeight: 400
- Rectangle {
- color: "black"
- width: 400
- height: 400
- Rectangle {
- x: 50; y: 50
- width: 100; height: 100
- color: "steelblue"
- MouseArea {
- objectName: "mousearea"
- anchors.fill: parent
- preventStealing: stealing
- }
- }
- }
-}
diff --git a/tests/auto/declarative/qdeclarativemousearea/data/rejectEvent.qml b/tests/auto/declarative/qdeclarativemousearea/data/rejectEvent.qml
deleted file mode 100644
index fc8292d703..0000000000
--- a/tests/auto/declarative/qdeclarativemousearea/data/rejectEvent.qml
+++ /dev/null
@@ -1,28 +0,0 @@
-import QtQuick 1.0
-
-Rectangle {
- id: root
- color: "#ffffff"
- width: 320; height: 240
- property bool mr1_pressed: false
- property bool mr1_released: false
- property bool mr1_canceled: false
- property bool mr2_pressed: false
- property bool mr2_released: false
- property bool mr2_canceled: false
-
- MouseArea {
- id: mouseRegion1
- anchors.fill: parent
- onPressed: { root.mr1_pressed = true }
- onReleased: { root.mr1_released = true }
- onCanceled: { root.mr1_canceled = true }
- }
- MouseArea {
- id: mouseRegion2
- width: 120; height: 120
- onPressed: { root.mr2_pressed = true; mouse.accepted = false }
- onReleased: { root.mr2_released = true }
- onCanceled: { root.mr2_canceled = true }
- }
-}
diff --git a/tests/auto/declarative/qdeclarativemousearea/data/updateMousePosOnClick.qml b/tests/auto/declarative/qdeclarativemousearea/data/updateMousePosOnClick.qml
deleted file mode 100644
index b77f7431c6..0000000000
--- a/tests/auto/declarative/qdeclarativemousearea/data/updateMousePosOnClick.qml
+++ /dev/null
@@ -1,20 +0,0 @@
-import QtQuick 1.0
-
-Rectangle {
- color: "#ffffff"
- width: 320; height: 240
- MouseArea {
- id: mouseRegion
- objectName: "mouseregion"
- anchors.fill: parent
- Rectangle {
- id: ball
- objectName: "ball"
- width: 20; height: 20
- radius: 10
- color: "#0000ff"
- x: { mouseRegion.mouseX }
- y: mouseRegion.mouseY
- }
- }
-}
diff --git a/tests/auto/declarative/qdeclarativemousearea/data/updateMousePosOnResize.qml b/tests/auto/declarative/qdeclarativemousearea/data/updateMousePosOnResize.qml
deleted file mode 100644
index 6571d8b12d..0000000000
--- a/tests/auto/declarative/qdeclarativemousearea/data/updateMousePosOnResize.qml
+++ /dev/null
@@ -1,38 +0,0 @@
-import QtQuick 1.0
-
-Rectangle {
- color: "#ffffff"
- width: 320; height: 240
- Rectangle {
- id: brother
- objectName: "brother"
- color: "lightgreen"
- x: 200; y: 100
- width: 120; height: 120
- }
- MouseArea {
- id: mouseRegion
- objectName: "mouseregion"
-
- property int x1
- property int y1
- property int x2
- property int y2
- property bool emitPositionChanged: false
- property bool mouseMatchesPos: true
-
- anchors.fill: brother
- onPressed: {
- if (mouse.x != mouseX || mouse.y != mouseY)
- mouseMatchesPos = false
- x1 = mouseX; y1 = mouseY
- anchors.fill = parent
- }
- onPositionChanged: { emitPositionChanged = true }
- onMousePositionChanged: {
- if (mouse.x != mouseX || mouse.y != mouseY)
- mouseMatchesPos = false
- x2 = mouseX; y2 = mouseY
- }
- }
-}
diff --git a/tests/auto/declarative/qdeclarativemousearea/qdeclarativemousearea.pro b/tests/auto/declarative/qdeclarativemousearea/qdeclarativemousearea.pro
deleted file mode 100644
index 0584c6120e..0000000000
--- a/tests/auto/declarative/qdeclarativemousearea/qdeclarativemousearea.pro
+++ /dev/null
@@ -1,18 +0,0 @@
-load(qttest_p4)
-contains(QT_CONFIG,declarative): QT += declarative gui network
-macx:CONFIG -= app_bundle
-
-HEADERS += ../shared/testhttpserver.h
-SOURCES += tst_qdeclarativemousearea.cpp ../shared/testhttpserver.cpp
-
-symbian: {
- importFiles.files = data
- importFiles.path = .
- DEPLOYMENT += importFiles
-} else {
- DEFINES += SRCDIR=\\\"$$PWD\\\"
-}
-
-CONFIG += parallel_test
-
-QT += core-private gui-private declarative-private
diff --git a/tests/auto/declarative/qdeclarativemousearea/tst_qdeclarativemousearea.cpp b/tests/auto/declarative/qdeclarativemousearea/tst_qdeclarativemousearea.cpp
deleted file mode 100644
index 7548ee0e9c..0000000000
--- a/tests/auto/declarative/qdeclarativemousearea/tst_qdeclarativemousearea.cpp
+++ /dev/null
@@ -1,705 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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 <private/qdeclarativemousearea_p.h>
-#include <private/qdeclarativerectangle_p.h>
-#include <private/qdeclarativeflickable_p.h>
-#include <QtDeclarative/qdeclarativeview.h>
-#include <QtDeclarative/qdeclarativecontext.h>
-#include <QtDeclarative/qdeclarativeengine.h>
-#include <QtDeclarative/qdeclarativeproperty.h>
-
-#ifdef Q_OS_SYMBIAN
-// In Symbian OS test data is located in applications private dir
-#define SRCDIR "."
-#endif
-
-class tst_QDeclarativeMouseArea: 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_QDeclarativeMouseArea::dragProperties()
-{
- QDeclarativeView *canvas = createView();
- canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/dragproperties.qml"));
- canvas->show();
- canvas->setFocus();
- QVERIFY(canvas->rootObject() != 0);
-
- QDeclarativeMouseArea *mouseRegion = canvas->rootObject()->findChild<QDeclarativeMouseArea*>("mouseregion");
- QDeclarativeDrag *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(), QDeclarativeDrag::XandYAxis);
- QSignalSpy axisSpy(drag, SIGNAL(axisChanged()));
- drag->setAxis(QDeclarativeDrag::XAxis);
- QCOMPARE(drag->axis(), QDeclarativeDrag::XAxis);
- QCOMPARE(axisSpy.count(),1);
- drag->setAxis(QDeclarativeDrag::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_QDeclarativeMouseArea::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);
-
- QDeclarativeMouseArea *mouseRegion = canvas->rootObject()->findChild<QDeclarativeMouseArea*>("mouseregion");
- QDeclarativeDrag *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_QDeclarativeMouseArea::dragging()
-{
- QDeclarativeView *canvas = createView();
-
- canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/dragging.qml"));
- canvas->show();
- canvas->setFocus();
- QVERIFY(canvas->rootObject() != 0);
-
- QDeclarativeMouseArea *mouseRegion = canvas->rootObject()->findChild<QDeclarativeMouseArea*>("mouseregion");
- QDeclarativeDrag *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_QDeclarativeMouseArea::createView()
-{
- QDeclarativeView *canvas = new QDeclarativeView(0);
- canvas->setFixedSize(240,320);
-
- return canvas;
-}
-
-void tst_QDeclarativeMouseArea::updateMouseAreaPosOnClick()
-{
- QDeclarativeView *canvas = createView();
- canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/updateMousePosOnClick.qml"));
- canvas->show();
- canvas->setFocus();
- QVERIFY(canvas->rootObject() != 0);
-
- QDeclarativeMouseArea *mouseRegion = canvas->rootObject()->findChild<QDeclarativeMouseArea*>("mouseregion");
- QVERIFY(mouseRegion != 0);
-
- QDeclarativeRectangle *rect = canvas->rootObject()->findChild<QDeclarativeRectangle*>("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_QDeclarativeMouseArea::updateMouseAreaPosOnResize()
-{
- QDeclarativeView *canvas = createView();
- canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/updateMousePosOnResize.qml"));
- canvas->show();
- canvas->setFocus();
- QVERIFY(canvas->rootObject() != 0);
-
- QDeclarativeMouseArea *mouseRegion = canvas->rootObject()->findChild<QDeclarativeMouseArea*>("mouseregion");
- QVERIFY(mouseRegion != 0);
-
- QDeclarativeRectangle *rect = canvas->rootObject()->findChild<QDeclarativeRectangle*>("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_QDeclarativeMouseArea::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_QDeclarativeMouseArea::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_QDeclarativeMouseArea::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_QDeclarativeMouseArea::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_QDeclarativeMouseArea::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_QDeclarativeMouseArea::preventStealing()
-{
- QDeclarativeView *canvas = createView();
-
- canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/preventstealing.qml"));
- canvas->show();
- canvas->setFocus();
- QVERIFY(canvas->rootObject() != 0);
-
- QDeclarativeFlickable *flickable = qobject_cast<QDeclarativeFlickable*>(canvas->rootObject());
- QVERIFY(flickable != 0);
-
- QDeclarativeMouseArea *mouseArea = canvas->rootObject()->findChild<QDeclarativeMouseArea*>("mousearea");
- QVERIFY(mouseArea != 0);
-
- QSignalSpy mousePositionSpy(mouseArea, SIGNAL(positionChanged(QDeclarativeMouseEvent*)));
-
- 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_QDeclarativeMouseArea::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_QDeclarativeMouseArea::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_QDeclarativeMouseArea::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_QDeclarativeMouseArea)
-
-#include "tst_qdeclarativemousearea.moc"