aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorMichal Guminiak <michal.guminiak@teleca.com>2010-10-19 15:52:24 +0200
committerDominik Kapusta <dominik.kapusta@teleca.com>2010-12-08 16:05:04 +0100
commit46fea17d494761ec6b40b424c2f3be88781df31a (patch)
tree23913c1121adc34548b2d99012dd05faa238f0df /tests
parentadac4f3fb70f524c4cf3df842db1317b4d2d3ea1 (diff)
Fixes: NB#182815 - Pannable widget is not transparent wrt. passing focus to child widgets
RevBy: Jarno Malmari, Michael Hasselmann, Dominik Kapusta Details: This patch completely removes mouse event replaying functionality in the pannable widget and moves necessary pieces to mscene. This should allow better focus handling in the scene and also should remove all crashes related to mouse event being bounced between pannable widgets when two of them are placed on the scene. It also introduces one new method, an overloaded version of grabGesture, which can be used to control the cancel event handling in libmeegotouch applications. See documentation of MWidget::grabGesture for details.
Diffstat (limited to 'tests')
-rw-r--r--tests/ut_mappletinventory/ut_mappletinventory.pro5
-rw-r--r--tests/ut_mappletinventoryview/ut_mappletinventoryview.pro5
-rw-r--r--tests/ut_mextensionarea/ut_mextensionarea.pro9
-rw-r--r--tests/ut_mmashupcanvas/ut_mmashupcanvas.pro9
-rw-r--r--tests/ut_mpannableviewport/ut_mpannableviewport.pro6
-rw-r--r--tests/ut_mpannablewidget/ut_mpannablewidget.cpp382
-rw-r--r--tests/ut_mpannablewidget/ut_mpannablewidget.h12
-rw-r--r--tests/ut_mpanrecognizer/ut_mpanrecognizer.cpp63
-rw-r--r--tests/ut_mscene/ut_mscene.cpp396
-rw-r--r--tests/ut_mscene/ut_mscene.h14
-rw-r--r--tests/ut_mscene/ut_mscene.pro19
-rw-r--r--tests/ut_mswiperecognizer/ut_mswiperecognizer.cpp92
-rw-r--r--tests/ut_mtoolbar/ut_mtoolbar.pro9
13 files changed, 473 insertions, 548 deletions
diff --git a/tests/ut_mappletinventory/ut_mappletinventory.pro b/tests/ut_mappletinventory/ut_mappletinventory.pro
index e09b4c76..9817f348 100644
--- a/tests/ut_mappletinventory/ut_mappletinventory.pro
+++ b/tests/ut_mappletinventory/ut_mappletinventory.pro
@@ -4,6 +4,7 @@ include(../common_mextensions.pri)
INCLUDEPATH += \
$$MSRCDIR/include \
$$MSRCDIR/corelib/widgets \
+ $$MSRCDIR/corelib/scene \
$$MSRCDIR/events
MODEL_HEADERS += \
@@ -16,7 +17,8 @@ SOURCES += \
$$MSRCDIR/extensions/mashup/appletinstallation/mappletinstantiator.cpp \
$$MSRCDIR/corelib/widgets/core/mwidgetcontroller.cpp \
$$MSRCDIR/corelib/widgets/core/mwidget.cpp \
- $$MSRCDIR/corelib/widgets/mwidgetmodel.cpp
+ $$MSRCDIR/corelib/widgets/mwidgetmodel.cpp \
+ $$MSRCDIR/corelib/scene/mscene.cpp \
# service classes
SOURCES += \
@@ -36,6 +38,7 @@ HEADERS += \
$$MSRCDIR/corelib/widgets/core/mwidget_p.h \
$$MSRCDIR/corelib/widgets/mwidgetmodel_p.h \
$$MSRCDIR/corelib/widgets/mobjectmenu.h \
+ $$MSRCDIR/corelib/scene/mscene.h \
$$MODEL_HEADERS
include(../common_bot.pri)
diff --git a/tests/ut_mappletinventoryview/ut_mappletinventoryview.pro b/tests/ut_mappletinventoryview/ut_mappletinventoryview.pro
index 8e1195b1..cc0ab64a 100644
--- a/tests/ut_mappletinventoryview/ut_mappletinventoryview.pro
+++ b/tests/ut_mappletinventoryview/ut_mappletinventoryview.pro
@@ -7,6 +7,7 @@ INCLUDEPATH += $$MSRCDIR/corelib/style
INCLUDEPATH += $$MSRCDIR/corelib/widgets
INCLUDEPATH += $$MSRCDIR/corelib/widgets/core
INCLUDEPATH += $$MSRCDIR/corelib/core
+INCLUDEPATH += $$MSRCDIR/corelib/scene
STYLE_HEADERS += $$MSRCDIR/extensions/style/mappletinventorystyle.h
MODEL_HEADERS += $$MSRCDIR/corelib/widgets/mwidgetmodel.h \
@@ -22,7 +23,8 @@ SOURCES += \
SOURCES += \
$$MSRCDIR/corelib/widgets/core/mwidgetcontroller.cpp \
$$MSRCDIR/corelib/widgets/core/mwidget.cpp \
- $$MSRCDIR/corelib/widgets/mwidgetmodel.cpp
+ $$MSRCDIR/corelib/widgets/mwidgetmodel.cpp \
+ $$MSRCDIR/corelib/scene/mscene.cpp \
# service classes
SOURCES += \
@@ -42,6 +44,7 @@ HEADERS += \
$$MSRCDIR/extensions/style/mappletinventorystyle.h \
$$MSRCDIR/corelib/widgets/mwidgetmodel_p.h \
$$MSRCDIR/corelib/widgets/mobjectmenu.h \
+ $$MSRCDIR/corelib/scene/mscene.h \
$$MODEL_HEADERS \
$$STYLE_HEADERS
diff --git a/tests/ut_mextensionarea/ut_mextensionarea.pro b/tests/ut_mextensionarea/ut_mextensionarea.pro
index 40989dfe..8e700160 100644
--- a/tests/ut_mextensionarea/ut_mextensionarea.pro
+++ b/tests/ut_mextensionarea/ut_mextensionarea.pro
@@ -3,14 +3,16 @@ include(../common_mextensions.pri)
INCLUDEPATH += \
$$MSRCDIR/corelib/widgets \
- $$MSRCDIR/corelib/style
+ $$MSRCDIR/corelib/style \
+ $$MSRCDIR/corelib/scene \
# unit test and unit classes
SOURCES += \
ut_mextensionarea.cpp \
$$MSRCDIR/extensions/applicationextension/mextensionarea.cpp \
$$MSRCDIR/corelib/widgets/core/mwidgetcontroller.cpp \
- $$MSRCDIR/corelib/widgets/core/mwidget.cpp
+ $$MSRCDIR/corelib/widgets/core/mwidget.cpp \
+ $$MSRCDIR/corelib/scene/mscene.cpp \
# service classes
SOURCES += \
@@ -24,6 +26,7 @@ HEADERS += \
$$MSRCDIR/extensions/mashup/mashup/mappletid.h \
$$MSRCDIR/corelib/widgets/core/mwidgetcontroller_p.h \
$$MSRCDIR/corelib/widgets/core/mwidget_p.h \
- $$MSRCDIR/corelib/widgets/mobjectmenu.h
+ $$MSRCDIR/corelib/widgets/mobjectmenu.h \
+ $$MSRCDIR/corelib/scene/mscene.h \
include(../common_bot.pri)
diff --git a/tests/ut_mmashupcanvas/ut_mmashupcanvas.pro b/tests/ut_mmashupcanvas/ut_mmashupcanvas.pro
index 13bfe8a4..a7680525 100644
--- a/tests/ut_mmashupcanvas/ut_mmashupcanvas.pro
+++ b/tests/ut_mmashupcanvas/ut_mmashupcanvas.pro
@@ -3,7 +3,8 @@ include(../common_mextensions.pri)
INCLUDEPATH += \
$$MSRCDIR/corelib/widgets \
- $$MSRCDIR/corelib/style
+ $$MSRCDIR/corelib/style \
+ $$MSRCDIR/corelib/scene \
# unit test and unit classes
SOURCES += \
@@ -11,7 +12,8 @@ SOURCES += \
$$MSRCDIR/extensions/mashup/mashup/mmashupcanvas.cpp \
$$MSRCDIR/corelib/widgets/core/mwidgetcontroller.cpp \
$$MSRCDIR/corelib/widgets/core/mwidget.cpp \
- $$MSRCDIR/extensions/applicationextension/mextensionarea.cpp
+ $$MSRCDIR/extensions/applicationextension/mextensionarea.cpp \
+ $$MSRCDIR/corelib/scene/mscene.cpp \
# service classes
SOURCES += \
@@ -25,6 +27,7 @@ HEADERS += \
$$MSRCDIR/extensions/mashup/mashup/mappletid.h \
$$MSRCDIR/corelib/widgets/core/mwidgetcontroller_p.h \
$$MSRCDIR/corelib/widgets/core/mwidget_p.h \
- $$MSRCDIR/corelib/widgets/mobjectmenu.h
+ $$MSRCDIR/corelib/widgets/mobjectmenu.h \
+ $$MSRCDIR/corelib/scene/mscene.h \
include(../common_bot.pri)
diff --git a/tests/ut_mpannableviewport/ut_mpannableviewport.pro b/tests/ut_mpannableviewport/ut_mpannableviewport.pro
index dc94aa5b..688d15bc 100644
--- a/tests/ut_mpannableviewport/ut_mpannableviewport.pro
+++ b/tests/ut_mpannableviewport/ut_mpannableviewport.pro
@@ -1,5 +1,7 @@
include(../common_top.pri)
-INCLUDEPATH += $$MSRCDIR/corelib/widgets
+INCLUDEPATH += \
+ $$MSRCDIR/corelib/widgets \
+ $$MSRCDIR/corelib/scene \
TARGET = ut_mpannableviewport
@@ -17,6 +19,7 @@ SOURCES += \
$$MSRCDIR/corelib/widgets/mpannablewidget.cpp \
$$MSRCDIR/corelib/widgets/mpannableviewportlayout.cpp \
$$MSRCDIR/corelib/widgets/mpannableviewport.cpp \
+ $$MSRCDIR/corelib/scene/mscene.cpp \
# unit test and unit classes
HEADERS += \
@@ -26,5 +29,6 @@ HEADERS += \
$$MSRCDIR/corelib/widgets/mpannableviewport.h \
$$MSRCDIR/corelib/widgets/core/mwidgetcontroller_p.h \
$$MSRCDIR/corelib/widgets/core/mwidget_p.h \
+ $$MSRCDIR/corelib/scene/mscene.h \
include(../common_bot.pri)
diff --git a/tests/ut_mpannablewidget/ut_mpannablewidget.cpp b/tests/ut_mpannablewidget/ut_mpannablewidget.cpp
index abbc11ec..3821daf6 100644
--- a/tests/ut_mpannablewidget/ut_mpannablewidget.cpp
+++ b/tests/ut_mpannablewidget/ut_mpannablewidget.cpp
@@ -62,20 +62,6 @@ struct PhysicsState {
};
PhysicsState *physicsState = 0;
-struct MouseGrabberState {
-
- MouseGrabberState() {
- grabbedMouse = false;
- ungrabbedMouse = false;
- }
-
- bool grabbedMouse;
- bool ungrabbedMouse;
-};
-MouseGrabberState *mouseGrabberState = 0;
-
-//Stubs
-
//Physics stubs:
void MPhysics2DPanning::start()
{
@@ -101,102 +87,6 @@ void MPhysics2DPanning::pointerRelease()
physicsState->pointerReleased = true;
}
-bool MPhysics2DPanning::inMotion() const
-{
- return physicsState->physicsIsMoving;
-}
-
-//QGraphicsObject stubs:
-void QGraphicsObject::grabGesture(Qt::GestureType, Qt::GestureFlags)
-{
-}
-
-//QGraphicsItem stubs:
-void QGraphicsItem::grabMouse()
-{
- mouseGrabberState->grabbedMouse = true;
-}
-
-void QGraphicsItem::ungrabMouse()
-{
- mouseGrabberState->ungrabbedMouse = true;
-}
-
-QGraphicsScene *QGraphicsItem::scene() const
-{
- return (QGraphicsScene*)1;
-}
-
-//QGraphiscScene stubs:
- QGraphicsItem* QGraphicsScene::mouseGrabberItem() const
-{
- return dummyItem;
-}
-
- QList<QGraphicsItem*> QGraphicsScene::items() const
-{
- QList<QGraphicsItem*> itemList;
- if (dummyItem) {
- itemList.append(dummyItem);
- }
- return itemList;
-}
-
- QList<QGraphicsView *> QGraphicsScene::views() const
- {
- QList<QGraphicsView *> viewList;
- viewList.append(0);
- return viewList;
- }
-
- bool QGraphicsScene::sendEvent(QGraphicsItem *item, QEvent *event)
- {
- if (item == dummyItem) {
-
- if (event->type() == MCancelEvent::eventNumber()) {
- dummyItem->cancelReceived = true;
- }
-
- switch (event->type()) {
- case QEvent::GraphicsSceneMousePress:
- dummyItem->mousePressReceived = true;
- break;
-
- case QEvent::GraphicsSceneMouseRelease:
- dummyItem->mouseReleaseReceived = true;
- break;
-
- case QEvent::GraphicsSceneMouseMove:
- dummyItem->mouseMoveReceived = true;
- break;
-
- default:
- break;
- }
- }
- return true;
- }
-
- QPointF QGraphicsItem::mapFromItem(const QGraphicsItem */*item*/, const QPointF &/*point*/) const
- {
- return QPointF();
- }
-
- QPoint QGraphicsView::mapFromScene(const QPointF& /*point*/) const
- {
- return QPoint();
- }
-
- QWidget *QAbstractScrollArea::viewport() const
- {
- return 0;
- }
-
- void QCoreApplication::postEvent(QObject* /*receiver*/, QEvent */*event*/)
- {
- qDebug("QCoreApplication::postEvent() - called");
- }
-
Qt::GestureState currentPanState = Qt::NoGesture;
Qt::GestureState QGesture::state() const
{
@@ -217,7 +107,6 @@ void Ut_MPannableWidget::init()
{
dummyItem = new DummyGraphicsItem;
physicsState = new PhysicsState;
- mouseGrabberState = new MouseGrabberState;
widget = new MPannableWidget;
}
@@ -225,174 +114,9 @@ void Ut_MPannableWidget::cleanup()
{
delete widget;
delete physicsState;
- delete mouseGrabberState;
delete dummyItem;
}
-void Ut_MPannableWidget::mousePressAndReleaseAreDeliveredToGrabber()
-{
- QGraphicsSceneMouseEvent pressEvent(QEvent::GraphicsSceneMousePress);
- pressEvent.setButton(Qt::LeftButton);
- QGraphicsSceneMouseEvent releaseEvent(QEvent::GraphicsSceneMouseRelease);
- releaseEvent.setButton(Qt::LeftButton);
-
- QTimerEvent timerEvent(1);
-
- widget->d_func()->glass->mousePressEvent(&pressEvent);
-
- QCOMPARE(widget->d_func()->mouseGrabber, (QGraphicsItem*)0);
-
- widget->d_func()->pressDeliveryTimerId = 1;
- widget->d_func()->glass->timerEvent(&timerEvent);
-
- QCOMPARE(widget->d_func()->mouseGrabber, dummyItem);
- QVERIFY2(widget->d_func()->resentList.at(0).type == QEvent::GraphicsSceneMousePress, "Mouse press was not sent");
-
- widget->d_func()->glass->mouseReleaseEvent(&releaseEvent);
-
- QCOMPARE(widget->d_func()->mouseGrabber, (QGraphicsItem*)0);
- QCOMPARE(dummyItem->mouseReleaseReceived, true);
-}
-
-void Ut_MPannableWidget::mouseMoveIsDelieveredToGrabberIfNoPanningIsRecognized()
-{
- QGraphicsSceneMouseEvent pressEvent(QEvent::GraphicsSceneMousePress);
- pressEvent.setButton(Qt::LeftButton);
- QGraphicsSceneMouseEvent moveEvent(QEvent::GraphicsSceneMouseMove);
- moveEvent.setButton(Qt::LeftButton);
- QGraphicsSceneMouseEvent releaseEvent(QEvent::GraphicsSceneMouseRelease);
- releaseEvent.setButton(Qt::LeftButton);
-
- QTimerEvent timerEvent(1);
-
- widget->d_func()->glass->mousePressEvent(&pressEvent);
-
- QCOMPARE(widget->d_func()->mouseGrabber, (QGraphicsItem*)0);
-
- widget->d_func()->pressDeliveryTimerId = 1;
- widget->d_func()->glass->timerEvent(&timerEvent);
-
- QCOMPARE(widget->d_func()->mouseGrabber, dummyItem);
- QVERIFY2(widget->d_func()->resentList.at(0).type == QEvent::GraphicsSceneMousePress, "Mouse press was not sent");
-
- widget->d_func()->glass->mouseMoveEvent(&moveEvent);
- QCOMPARE(widget->d_func()->mouseGrabber, dummyItem);
- QCOMPARE(dummyItem->mouseMoveReceived, true);
- QCOMPARE(dummyItem->mouseReleaseReceived, false);
-
- widget->d_func()->glass->mouseReleaseEvent(&releaseEvent);
-
- QCOMPARE(widget->d_func()->mouseGrabber, (QGraphicsItem*)0);
- QCOMPARE(dummyItem->mouseReleaseReceived, true);
-}
-
-void Ut_MPannableWidget::mousePressWithNoLeftButtonIsIgnored()
-{
- QGraphicsSceneMouseEvent pressEvent(QEvent::GraphicsSceneMousePress);
- pressEvent.setButton(Qt::RightButton);
-
- widget->d_func()->glass->mousePressEvent(&pressEvent);
-
- QCOMPARE(widget->d_func()->mouseGrabber, (QGraphicsItem*)0);
- QCOMPARE(widget->d_func()->pressDeliveryTimerId, 0);
- QVERIFY(pressEvent.isAccepted() == false);
-}
-
-void Ut_MPannableWidget::pannableViewportInsidePannableViewportIgnoresMousePress()
-{
- MPannableWidget *innerWidget = new MPannableWidget(widget);
-
- QGraphicsSceneMouseEvent pressEvent(QEvent::GraphicsSceneMousePress);
- pressEvent.setButton(Qt::LeftButton);
-
- innerWidget->d_func()->glass->mousePressEvent(&pressEvent);
-
- QCOMPARE(innerWidget->d_func()->mouseGrabber, (QGraphicsItem*)0);
- QCOMPARE(innerWidget->d_func()->pressDeliveryTimerId, 0);
- QVERIFY(pressEvent.isAccepted() == false);
-}
-
-void Ut_MPannableWidget::cancelEventStopPhysicsAndResetsStateOfWidget()
-{
- QPanGesture panGesture;
-
- QList<QGesture*> gestureList;
- gestureList.append(&panGesture);
- QGestureEvent event(gestureList);
-
- QGraphicsSceneMouseEvent pressEvent(QEvent::GraphicsSceneMousePress);
- pressEvent.setButton(Qt::LeftButton);
-
- QTimerEvent timerEvent(1);
-
-
- widget->d_func()->glass->mousePressEvent(&pressEvent); //mousePress delivered to glass,
- //delivery timer is started.
- widget->d_func()->pressDeliveryTimerId = 1;
- widget->d_func()->glass->timerEvent(&timerEvent); //timer expired, mouse press should be delivered to
- //the widget inside pannable widget.
-
- QCOMPARE(widget->d_func()->mouseGrabber, dummyItem);
-
- currentPanState = Qt::GestureStarted;
- widget->panGestureEvent(&event, &panGesture);
- QCOMPARE(physicsState->pointerPressed, true);
- QCOMPARE(physicsState->pointerMoved, true);
- QCOMPARE(physicsState->pointerReleased, false);
-
- QCOMPARE(mouseGrabberState->ungrabbedMouse, true); //pannable widget ungrabbed mouse;
- QCOMPARE(mouseGrabberState->grabbedMouse, true); //and grabbed it again later.
-
- MCancelEvent cancelEvent; //Sending cancel event
- widget->cancelEvent(&cancelEvent);
-
- mouseGrabberState->grabbedMouse = false;
- mouseGrabberState->ungrabbedMouse = false;
-
- QCOMPARE(physicsState->pointerReleased, true); //Pannable widget should reset it's state
- QCOMPARE(physicsState->physicsStopped, true); //after cancel event.
- QCOMPARE(mouseGrabberState->grabbedMouse, false);
-}
-
-void Ut_MPannableWidget::disabledWidgetShouldIgnoreMousePressAndPanEvents()
-{
- widget->setVerticalPanningPolicy(MPannableWidget::PanningAlwaysOff);
- widget->setHorizontalPanningPolicy(MPannableWidget::PanningAlwaysOff);
-
- QCOMPARE(physicsState->pointerPressed, false);
- QCOMPARE(physicsState->pointerMoved, false);
- QCOMPARE(physicsState->pointerReleased, true); //Disabling widget resets the state of physics.
- physicsState->pointerReleased = false; //Cleaning up the state tracker.
-
- QGraphicsSceneMouseEvent pressEvent(QEvent::GraphicsSceneMousePress);
- pressEvent.setButton(Qt::LeftButton);
-
- widget->d_func()->glass->mousePressEvent(&pressEvent);
-
- QCOMPARE(physicsState->pointerPressed, false);
- QCOMPARE(physicsState->pointerMoved, false);
- QCOMPARE(physicsState->pointerReleased, false);
-
- QCOMPARE(widget->d_func()->mouseGrabber, (QGraphicsItem*)0);
- QCOMPARE(widget->d_func()->pressDeliveryTimerId, 0);
- QVERIFY(pressEvent.isAccepted() == false);
-
- QPanGesture panGesture;
-
- QList<QGesture*> gestureList;
- gestureList.append(&panGesture);
- QGestureEvent event(gestureList);
-
- currentPanState = Qt::GestureStarted;
- panGesture.setOffset(QPointF(100,0));
-
- widget->panGestureEvent(&event, &panGesture);
- QCOMPARE(physicsState->pointerPressed, false);
- QCOMPARE(physicsState->pointerMoved, false);
- QCOMPARE(physicsState->pointerReleased, false);
- QCOMPARE(event.isAccepted(&panGesture), false);
-}
-
void Ut_MPannableWidget::panGestureMovesPhysicsPointer()
{
QPanGesture panGesture;
@@ -443,37 +167,6 @@ void Ut_MPannableWidget::panGestureAgainstPanningDirectionIsIgnored()
QCOMPARE(event.isAccepted(&panGesture), false);
}
-void Ut_MPannableWidget::panGestureCancelsMouseEvents()
-{
- QGraphicsSceneMouseEvent pressEvent(QEvent::GraphicsSceneMousePress);
- QGraphicsSceneMouseEvent releaseEvent(QEvent::GraphicsSceneMouseRelease);
- QTimerEvent timerEvent(1);
-
- widget->glassMousePressEvent(&pressEvent);
-
- QCOMPARE(widget->d_func()->mouseGrabber, (QGraphicsItem*)0);
-
- widget->d_func()->pressDeliveryTimerId = 1;
- widget->glassTimerEvent(&timerEvent);
-
- QCOMPARE(widget->d_func()->mouseGrabber, dummyItem);
- QVERIFY2(widget->d_func()->resentList.at(0).type == QEvent::GraphicsSceneMousePress, "Mouse press was not sent");
-
- QPanGesture panGesture;
-
- QList<QGesture*> gestureList;
- gestureList.append(&panGesture);
- QGestureEvent event(gestureList);
-
- currentPanState = Qt::GestureStarted;
- widget->panGestureEvent(&event, &panGesture);
- QCOMPARE(physicsState->pointerPressed, true);
- QCOMPARE(physicsState->pointerMoved, true);
- QCOMPARE(physicsState->pointerReleased, false);
-
- QCOMPARE(dummyItem->cancelReceived, true);
-}
-
class CustomPhysics : public MPhysics2DPanning
{
public:
@@ -513,79 +206,4 @@ void Ut_MPannableWidget::settingPhysicsToNULLShouldNotBreakTheWidget()
}
-void Ut_MPannableWidget::ignoredPanGestureShouldNotCancelMouseEvents()
-{
- QGraphicsSceneMouseEvent pressEvent(QEvent::GraphicsSceneMousePress);
- pressEvent.setButton(Qt::LeftButton);
- QGraphicsSceneMouseEvent moveEvent(QEvent::GraphicsSceneMouseMove);
- moveEvent.setButton(Qt::LeftButton);
- QGraphicsSceneMouseEvent releaseEvent(QEvent::GraphicsSceneMouseRelease);
- releaseEvent.setButton(Qt::LeftButton);
-
- QTimerEvent timerEvent(1);
-
- widget->d_func()->glass->mousePressEvent(&pressEvent);
-
- QCOMPARE(widget->d_func()->mouseGrabber, (QGraphicsItem*)0);
-
- widget->d_func()->pressDeliveryTimerId = 1;
- widget->d_func()->glass->timerEvent(&timerEvent);
-
- QCOMPARE(widget->d_func()->mouseGrabber, dummyItem);
- QVERIFY2(widget->d_func()->resentList.at(0).type == QEvent::GraphicsSceneMousePress, "Mouse press was not sent");
-
- QPanGesture panGesture;
- panGesture.setOffset(QPointF(50,0));
-
- QList<QGesture*> gestureList;
- gestureList.append(&panGesture);
- QGestureEvent event(gestureList);
-
- currentPanState = Qt::GestureStarted;
- widget->panGestureEvent(&event, &panGesture);
- QCOMPARE(physicsState->pointerPressed, false);
- QCOMPARE(physicsState->pointerMoved, false);
- QCOMPARE(physicsState->pointerReleased, false);
-
- widget->d_func()->glass->mouseMoveEvent(&moveEvent);
- QCOMPARE(widget->d_func()->mouseGrabber, dummyItem);
- QCOMPARE(dummyItem->mouseMoveReceived, true);
- QCOMPARE(dummyItem->mouseReleaseReceived, false);
-
- widget->d_func()->glass->cancelEvent(new MCancelEvent());
- widget->d_func()->glass->mouseReleaseEvent(&releaseEvent);
-
- QCOMPARE(widget->d_func()->mouseGrabber, (QGraphicsItem*)0);
- QCOMPARE(dummyItem->mouseReleaseReceived, true);
-
- QCOMPARE(dummyItem->cancelReceived, false);
-}
-
-void Ut_MPannableWidget::tapAndHoldGestureShouldBeGrabbedIfViewportIsMoving()
-{
- QTapAndHoldGesture tapAndHoldGesture;
-
- QList<QGesture*> gestureList;
- gestureList.append(&tapAndHoldGesture);
- QGestureEvent gestureEvent(gestureList);
-
- physicsState->physicsIsMoving = true;
-
- widget->d_func()->glass->tapAndHoldGestureEvent(&gestureEvent, &tapAndHoldGesture);
-
- QCOMPARE(gestureEvent.isAccepted(&tapAndHoldGesture), true);
-
- physicsState->physicsIsMoving = false;
-
- widget->d_func()->glass->tapAndHoldGestureEvent(&gestureEvent, &tapAndHoldGesture);
-
- QCOMPARE(gestureEvent.isAccepted(&tapAndHoldGesture), false);
-}
-
-void Ut_MPannableWidget::testPanThreshold()
-{
- widget->setPanThreshold(100);
- QCOMPARE(widget->panThreshold(), qreal(0));
-}
-
QTEST_APPLESS_MAIN(Ut_MPannableWidget);
diff --git a/tests/ut_mpannablewidget/ut_mpannablewidget.h b/tests/ut_mpannablewidget/ut_mpannablewidget.h
index f2ad56c1..88ac8a17 100644
--- a/tests/ut_mpannablewidget/ut_mpannablewidget.h
+++ b/tests/ut_mpannablewidget/ut_mpannablewidget.h
@@ -42,24 +42,12 @@ private slots:
void init();
void cleanup();
- void mousePressAndReleaseAreDeliveredToGrabber();
- void mouseMoveIsDelieveredToGrabberIfNoPanningIsRecognized();
- void mousePressWithNoLeftButtonIsIgnored();
- void cancelEventStopPhysicsAndResetsStateOfWidget();
- void pannableViewportInsidePannableViewportIgnoresMousePress();
- void disabledWidgetShouldIgnoreMousePressAndPanEvents();
-
void usingCustomPhysics();
void settingNewPhysicsShouldEmitPhysicsChangeSignal();
void settingPhysicsToNULLShouldNotBreakTheWidget();
void panGestureMovesPhysicsPointer();
void panGestureAgainstPanningDirectionIsIgnored();
- void panGestureCancelsMouseEvents();
- void ignoredPanGestureShouldNotCancelMouseEvents();
-
- void tapAndHoldGestureShouldBeGrabbedIfViewportIsMoving();
- void testPanThreshold();
private:
MPannableWidget *widget;
diff --git a/tests/ut_mpanrecognizer/ut_mpanrecognizer.cpp b/tests/ut_mpanrecognizer/ut_mpanrecognizer.cpp
index d2c056d7..f3d7b05f 100644
--- a/tests/ut_mpanrecognizer/ut_mpanrecognizer.cpp
+++ b/tests/ut_mpanrecognizer/ut_mpanrecognizer.cpp
@@ -23,7 +23,8 @@
#include "mpangesture_p.h"
-#include <QGraphicsSceneMouseEvent>
+#include <QGraphicsView>
+#include <QMouseEvent>
#include <QtTest/QtTest>
#include <MApplication>
@@ -67,11 +68,15 @@ Qt::GestureState QGesture::state() const
}
MApplication *app;
+QGraphicsView *view;
void Ut_MPanRecognizer::initTestCase()
{
static int argc = 1;
static char *app_name[1] = { (char *) "./ut_mpanrecognizer" };
app = new MApplication(argc, app_name);
+
+ view = new QGraphicsView();
+ view->show();
}
void Ut_MPanRecognizer::cleanupTestCase()
@@ -92,25 +97,14 @@ void Ut_MPanRecognizer::cleanup()
void Ut_MPanRecognizer::testCreateGesture()
{
- panGesture = static_cast<MPanGesture*>(recognizer->create(this));
+ panGesture = static_cast<MPanGesture*>(recognizer->create(view));
}
void Ut_MPanRecognizer::testRecognize()
{
- QGraphicsSceneMouseEvent pressEvent(QEvent::GraphicsSceneMousePress);
- pressEvent.setPos(QPointF(0,0));
- pressEvent.setScenePos(QPointF(0,0));
- pressEvent.setScreenPos(QPoint(0,0));
-
- QGraphicsSceneMouseEvent moveEvent(QEvent::GraphicsSceneMouseMove);
- moveEvent.setPos(QPointF(0,100));
- moveEvent.setScenePos(QPointF(0,100));
- moveEvent.setScreenPos(QPoint(0,100));
-
- QGraphicsSceneMouseEvent releaseEvent(QEvent::GraphicsSceneMouseRelease);
- releaseEvent.setPos(QPointF(0,100));
- releaseEvent.setScenePos(QPointF(0,100));
- releaseEvent.setScreenPos(QPoint(0,100));
+ QMouseEvent pressEvent(QEvent::MouseButtonPress,QPoint(0,0), Qt::LeftButton, Qt::LeftButton, 0);
+ QMouseEvent moveEvent(QEvent::MouseMove,QPoint(0,100), Qt::LeftButton, Qt::LeftButton, 0);
+ QMouseEvent releaseEvent(QEvent::MouseButtonRelease,QPoint(0,100), Qt::LeftButton, Qt::LeftButton, 0);
QGestureRecognizer::Result currentState;
currentState = recognizer->recognize(panGesture, 0, &pressEvent);
@@ -128,15 +122,8 @@ void Ut_MPanRecognizer::testRecognize()
void Ut_MPanRecognizer::testTapIsNotRecognizedAsPan()
{
- QGraphicsSceneMouseEvent pressEvent(QEvent::GraphicsSceneMousePress);
- pressEvent.setPos(QPointF(0,0));
- pressEvent.setScenePos(QPointF(0,0));
- pressEvent.setScreenPos(QPoint(0,0));
-
- QGraphicsSceneMouseEvent releaseEvent(QEvent::GraphicsSceneMouseRelease);
- pressEvent.setPos(QPointF(0,0));
- pressEvent.setScenePos(QPointF(0,0));
- pressEvent.setScreenPos(QPoint(0,0));
+ QMouseEvent pressEvent(QEvent::MouseButtonPress,QPoint(0,0), Qt::LeftButton, Qt::LeftButton, 0);
+ QMouseEvent releaseEvent(QEvent::MouseButtonRelease,QPoint(0,0), Qt::LeftButton, Qt::LeftButton, 0);
QGestureRecognizer::Result currentState;
currentState = recognizer->recognize(panGesture, 0, &pressEvent);
@@ -148,36 +135,20 @@ void Ut_MPanRecognizer::testTapIsNotRecognizedAsPan()
void Ut_MPanRecognizer::testTheMovementInDirectionOtherThanRecognizedIsZeroed()
{
- QGraphicsSceneMouseEvent pressEvent(QEvent::GraphicsSceneMousePress);
- pressEvent.setPos(QPointF(0,0));
- pressEvent.setScenePos(QPointF(0,0));
- pressEvent.setScreenPos(QPoint(0,0));
-
- QGraphicsSceneMouseEvent moveEvent(QEvent::GraphicsSceneMouseMove);
- moveEvent.setPos(QPointF(0,100));
- moveEvent.setScenePos(QPointF(0,100));
- moveEvent.setScreenPos(QPoint(0,100));
-
- QGraphicsSceneMouseEvent releaseEvent(QEvent::GraphicsSceneMouseRelease);
- releaseEvent.setPos(QPointF(0,100));
- releaseEvent.setScenePos(QPointF(0,100));
- releaseEvent.setScreenPos(QPoint(0,100));
+ QMouseEvent pressEvent(QEvent::MouseButtonPress,QPoint(0,0), Qt::LeftButton, Qt::LeftButton, 0);
+ QMouseEvent moveEvent1(QEvent::MouseMove,QPoint(0,100), Qt::LeftButton, Qt::LeftButton, 0);
+ QMouseEvent moveEvent2(QEvent::MouseMove,QPoint(30,100), Qt::LeftButton, Qt::LeftButton, 0);
QGestureRecognizer::Result currentState;
currentState = recognizer->recognize(panGesture, 0, &pressEvent);
QCOMPARE( currentState, QGestureRecognizer::MayBeGesture);
- currentState = recognizer->recognize(panGesture, 0, &moveEvent);
+ currentState = recognizer->recognize(panGesture, 0, &moveEvent1);
QCOMPARE( currentState, QGestureRecognizer::TriggerGesture);
//Artificially setting state of QGesture object.
currentGestureState = Qt::GestureUpdated;
-
- moveEvent.setPos(QPointF(30,100));
- moveEvent.setScenePos(QPointF(30,100));
- moveEvent.setScreenPos(QPoint(30,100));
-
- recognizer->recognize(panGesture, 0, &moveEvent);
+ recognizer->recognize(panGesture, 0, &moveEvent2);
QCOMPARE( panGesture->offset().x(), 0.0);
}
diff --git a/tests/ut_mscene/ut_mscene.cpp b/tests/ut_mscene/ut_mscene.cpp
index 31c97509..99659c82 100644
--- a/tests/ut_mscene/ut_mscene.cpp
+++ b/tests/ut_mscene/ut_mscene.cpp
@@ -18,23 +18,94 @@
****************************************************************************/
#include <QtTest/QtTest>
-#include <QList>
-#include <QGraphicsItem>
#include <QPainter>
-#include <QTime>
-#include <mapplication.h>
-#include <mdeviceprofile.h>
-#include <mtheme.h>
-#include "ut_mscene.h"
-#include <MButton>
+#include <QImage>
+#include <QGraphicsSceneMouseEvent>
+#include <QGesture>
+#include <QGestureEvent>
+#include "mwidget.h"
+#include "mbutton.h"
+#include "ut_mscene.h"
+#include "mscene_p.h"
#define MAX_PARAMS 10
-void Ut_MScene::initTestCase()
+class EventTester : public MWidget
{
+public:
+ EventTester() {
+ mousePressReceived = false;
+ mouseMoveReceived = false;
+ mouseReleaseReceived = false;
+ cancelReceived = false;
+ touchBeginReceived = false;
+ touchUpdateReceived = false;
+ touchEndReceived = false;
+
+ setAcceptTouchEvents(true);
+ }
+
+ bool mousePressReceived;
+ bool mouseMoveReceived;
+ bool mouseReleaseReceived;
+ bool cancelReceived;
+ bool touchBeginReceived;
+ bool touchUpdateReceived;
+ bool touchEndReceived;
+
+ void mousePressEvent(QGraphicsSceneMouseEvent */*event*/)
+ {
+ mousePressReceived = true;
+ }
+
+ void mouseMoveEvent(QGraphicsSceneMouseEvent */*event*/)
+ {
+ mouseMoveReceived = true;
+ }
+
+ void mouseReleaseEvent(QGraphicsSceneMouseEvent */*event*/)
+ {
+ mouseReleaseReceived = true;
+ }
+
+ void cancelEvent(MCancelEvent */*event*/)
+ {
+ cancelReceived = true;
+ }
+
+ bool event(QEvent *event)
+ {
+ switch (event->type())
+ {
+ case QEvent::TouchBegin:
+ touchBeginReceived = true;
+ event->accept();
+ return true;
+ case QEvent::TouchUpdate:
+ touchUpdateReceived = true;
+ event->accept();
+ return true;
+ case QEvent::TouchEnd:
+ touchEndReceived = true;
+ event->accept();
+ return true;
+ default:
+ return MWidget::event(event);
+ }
+ }
+};
+EventTester *eventTester = 0;
+Qt::GestureState currentPanState = Qt::NoGesture;
+Qt::GestureState QGesture::state() const
+{
+ return currentPanState;
+}
+
+void Ut_MScene::initTestCase()
+{
}
void Ut_MScene::cleanupTestCase()
{
@@ -56,7 +127,11 @@ void Ut_MScene::init()
x = 6;
app = new MApplication(x, argv);
+ eventTester = new EventTester;
m_subject = new MScene();
+
+ m_subject->addItem(eventTester);
+ eventTester->resize(1000,1000);
}
void Ut_MScene::cleanup()
@@ -86,4 +161,307 @@ void Ut_MScene::drawForeground()
QVERIFY(img1 == img1);
}
+void Ut_MScene::mousePressIsDelayed()
+{
+ QGraphicsSceneMouseEvent mousePress(QEvent::GraphicsSceneMousePress);
+ mousePress.setButton(Qt::LeftButton);
+ mousePress.setPos(QPointF(100,100));
+ mousePress.setScreenPos(QPoint(100,100));
+ mousePress.setScenePos(QPointF(100,100));
+
+ QGraphicsSceneMouseEvent mouseRelease(QEvent::GraphicsSceneMouseRelease);
+ mouseRelease.setButton(Qt::LeftButton);
+ mouseRelease.setPos(QPointF(100,100));
+ mouseRelease.setScreenPos(QPoint(100,100));
+ mouseRelease.setScenePos(QPointF(100,100));
+
+ QApplication::sendEvent(m_subject,&mousePress);
+
+ QCOMPARE(eventTester->mousePressReceived, false);
+ QCOMPARE(eventTester->mouseMoveReceived, false);
+ QCOMPARE(eventTester->mouseReleaseReceived, false);
+
+ // Initial press timer has been started.
+ QVERIFY(m_subject->d_func()->initialPressTimer->isActive());
+ m_subject->d_func()->initialPressTimer->stop();
+ m_subject->d_func()->_q_initialPressDeliveryTimeout();
+
+ QCOMPARE(eventTester->mousePressReceived, true);
+ QCOMPARE(eventTester->mouseMoveReceived, false);
+ QCOMPARE(eventTester->mouseReleaseReceived, false);
+ eventTester->mousePressReceived = false;
+}
+
+void Ut_MScene::touchBeginIsDelayed()
+{
+ QList<QTouchEvent::TouchPoint> touchList;
+ QTouchEvent::TouchPoint touchPoint;
+ touchPoint.setState(Qt::TouchPointPressed);
+ touchPoint.setPos(QPointF(100,100));
+ touchPoint.setScenePos(QPointF(100,100));
+ touchPoint.setScreenPos(QPoint(100,100));
+
+ touchList.append(touchPoint);
+
+ QTouchEvent touchEvent(QEvent::TouchBegin, QTouchEvent::TouchPad, Qt::NoModifier, Qt::TouchPointPressed, touchList);
+
+ QApplication::sendEvent(m_subject,&touchEvent);
+
+ QCOMPARE(eventTester->touchBeginReceived, false);
+ QCOMPARE(eventTester->touchUpdateReceived, false);
+ QCOMPARE(eventTester->touchEndReceived, false);
+
+ // Initial press timer has been started.
+ QVERIFY(m_subject->d_func()->initialPressTimer->isActive());
+ m_subject->d_func()->initialPressTimer->stop();
+ m_subject->d_func()->_q_initialPressDeliveryTimeout();
+
+ QCOMPARE(eventTester->touchBeginReceived, true);
+ QCOMPARE(eventTester->touchUpdateReceived, false);
+ QCOMPARE(eventTester->touchEndReceived, false);
+}
+
+void Ut_MScene::mousePressAndReleaseAreDeliveredToGrabber()
+{
+ QGraphicsSceneMouseEvent mousePress(QEvent::GraphicsSceneMousePress);
+ mousePress.setButton(Qt::LeftButton);
+ mousePress.setPos(QPointF(100,100));
+ mousePress.setScreenPos(QPoint(100,100));
+ mousePress.setScenePos(QPointF(100,100));
+
+ QGraphicsSceneMouseEvent mouseRelease(QEvent::GraphicsSceneMouseRelease);
+ mouseRelease.setButton(Qt::LeftButton);
+ mouseRelease.setPos(QPointF(100,100));
+ mouseRelease.setScreenPos(QPoint(100,100));
+ mouseRelease.setScenePos(QPointF(100,100));
+
+ QApplication::sendEvent(m_subject,&mousePress);
+
+ // Initial press timer has been started.
+ QVERIFY(m_subject->d_func()->initialPressTimer->isActive());
+ m_subject->d_func()->initialPressTimer->stop();
+ m_subject->d_func()->_q_initialPressDeliveryTimeout();
+
+ QCOMPARE(eventTester->mousePressReceived, true);
+ QCOMPARE(eventTester->mouseMoveReceived, false);
+ QCOMPARE(eventTester->mouseReleaseReceived, false);
+ eventTester->mousePressReceived = false;
+
+ QApplication::sendEvent(m_subject,&mouseRelease);
+
+ QCOMPARE(eventTester->mousePressReceived, false);
+ QCOMPARE(eventTester->mouseMoveReceived, false);
+ QCOMPARE(eventTester->mouseReleaseReceived, true);
+
+}
+
+void Ut_MScene::touchBeginAndEndAreDeliveredToGrabber()
+{
+ QList<QTouchEvent::TouchPoint> touchBeginList;
+ QTouchEvent::TouchPoint touchPointBegin;
+ touchPointBegin.setState(Qt::TouchPointPressed);
+ touchPointBegin.setPos(QPointF(100,100));
+ touchPointBegin.setScenePos(QPointF(100,100));
+ touchPointBegin.setScreenPos(QPoint(100,100));
+ touchBeginList.append(touchPointBegin);
+ QTouchEvent touchBeginEvent(QEvent::TouchBegin, QTouchEvent::TouchPad, Qt::NoModifier, Qt::TouchPointPressed, touchBeginList);
+
+ QList<QTouchEvent::TouchPoint> touchEndList;
+ QTouchEvent::TouchPoint touchPointEnd;
+ touchPointEnd.setState(Qt::TouchPointReleased);
+ touchPointEnd.setPos(QPointF(100,100));
+ touchPointEnd.setScenePos(QPointF(100,100));
+ touchPointEnd.setScreenPos(QPoint(100,100));
+ touchEndList.append(touchPointEnd);
+ QTouchEvent touchEndEvent(QEvent::TouchEnd, QTouchEvent::TouchPad, Qt::NoModifier, Qt::TouchPointReleased, touchEndList);
+
+ QApplication::sendEvent(m_subject,&touchBeginEvent);
+
+ // Initial press timer has been started.
+ QVERIFY(m_subject->d_func()->initialPressTimer->isActive());
+ m_subject->d_func()->initialPressTimer->stop();
+ m_subject->d_func()->_q_initialPressDeliveryTimeout();
+
+ QCOMPARE(eventTester->touchBeginReceived, true);
+ QCOMPARE(eventTester->touchUpdateReceived, false);
+ QCOMPARE(eventTester->touchEndReceived, false);
+ eventTester->touchBeginReceived = false;
+
+ QApplication::sendEvent(m_subject,&touchEndEvent);
+
+ QCOMPARE(eventTester->touchBeginReceived, false);
+ QCOMPARE(eventTester->touchUpdateReceived, false);
+ QCOMPARE(eventTester->touchEndReceived, true);
+}
+
+void Ut_MScene::mouseMoveIsDelieveredToGrabberIfNoGestureIsRecognized()
+{
+ QGraphicsSceneMouseEvent mousePress(QEvent::GraphicsSceneMousePress);
+ mousePress.setButton(Qt::LeftButton);
+ mousePress.setPos(QPointF(100,100));
+ mousePress.setScreenPos(QPoint(100,100));
+ mousePress.setScenePos(QPointF(100,100));
+
+ QGraphicsSceneMouseEvent mouseMove(QEvent::GraphicsSceneMouseMove);
+ mouseMove.setButton(Qt::LeftButton);
+ mouseMove.setPos(QPointF(150,100));
+ mouseMove.setScreenPos(QPoint(150,100));
+ mouseMove.setScenePos(QPointF(150,100));
+
+ QApplication::sendEvent(m_subject,&mousePress);
+
+ //Initial press timer has been started.
+ QVERIFY(m_subject->d_func()->initialPressTimer->isActive());
+ m_subject->d_func()->initialPressTimer->stop();
+ m_subject->d_func()->_q_initialPressDeliveryTimeout();
+
+ QCOMPARE(eventTester->mousePressReceived, true);
+ QCOMPARE(eventTester->mouseMoveReceived, false);
+ QCOMPARE(eventTester->mouseReleaseReceived, false);
+ eventTester->mousePressReceived = false;
+
+ QApplication::sendEvent(m_subject,&mouseMove);
+
+ QCOMPARE(eventTester->mousePressReceived, false);
+ QCOMPARE(eventTester->mouseMoveReceived, true);
+ QCOMPARE(eventTester->mouseReleaseReceived, false);
+}
+
+void Ut_MScene::mouseReleaseResetsStateOfEventEater()
+{
+ QGraphicsSceneMouseEvent mousePress(QEvent::GraphicsSceneMousePress);
+ mousePress.setButton(Qt::LeftButton);
+ mousePress.setPos(QPointF(100,100));
+ mousePress.setScreenPos(QPoint(100,100));
+ mousePress.setScenePos(QPointF(100,100));
+
+ QGraphicsSceneMouseEvent mouseRelease(QEvent::GraphicsSceneMouseRelease);
+ mouseRelease.setButton(Qt::LeftButton);
+ mouseRelease.setPos(QPointF(100,100));
+ mouseRelease.setScreenPos(QPoint(100,100));
+ mouseRelease.setScenePos(QPointF(100,100));
+
+ QApplication::sendEvent(m_subject,&mousePress);
+
+ //Initial press timer has been started.
+ QVERIFY(m_subject->d_func()->initialPressTimer->isActive());
+ m_subject->d_func()->initialPressTimer->stop();
+ m_subject->d_func()->_q_initialPressDeliveryTimeout();
+
+ QCOMPARE(eventTester->mousePressReceived, true);
+ QCOMPARE(eventTester->mouseMoveReceived, false);
+ QCOMPARE(eventTester->mouseReleaseReceived, false);
+ eventTester->mousePressReceived = false;
+
+ QPanGesture panGesture;
+ QList<QGesture*> gestureList;
+ gestureList.append(&panGesture);
+ QGestureEvent gestureEvent(gestureList);
+ currentPanState = Qt::GestureStarted;
+
+ QApplication::sendEvent(m_subject,&gestureEvent);
+ m_subject->d_func()->notifyChildRequestedMouseCancel();
+
+ currentPanState = Qt::GestureFinished;
+ QApplication::sendEvent(m_subject,&gestureEvent);
+
+ QCOMPARE(m_subject->mouseGrabberItem(), m_subject->d_func()->eventEater);
+
+ QApplication::sendEvent(m_subject,&mouseRelease);
+
+ QVERIFY(m_subject->mouseGrabberItem() != m_subject->d_func()->eventEater);
+}
+
+void Ut_MScene::panGestureCancelsMouseEvents()
+{
+ QGraphicsSceneMouseEvent mousePress(QEvent::GraphicsSceneMousePress);
+ mousePress.setButton(Qt::LeftButton);
+ mousePress.setPos(QPointF(100,100));
+ mousePress.setScreenPos(QPoint(100,100));
+ mousePress.setScenePos(QPointF(100,100));
+
+ QGraphicsSceneMouseEvent mouseRelease(QEvent::GraphicsSceneMouseRelease);
+ mouseRelease.setButton(Qt::LeftButton);
+ mouseRelease.setPos(QPointF(100,100));
+ mouseRelease.setScreenPos(QPoint(100,100));
+ mouseRelease.setScenePos(QPointF(100,100));
+
+ QApplication::sendEvent(m_subject,&mousePress);
+
+ //Initial press timer has been started.
+ QVERIFY(m_subject->d_func()->initialPressTimer->isActive());
+ m_subject->d_func()->initialPressTimer->stop();
+ m_subject->d_func()->_q_initialPressDeliveryTimeout();
+
+ QCOMPARE(eventTester->mousePressReceived, true);
+ QCOMPARE(eventTester->mouseMoveReceived, false);
+ QCOMPARE(eventTester->mouseReleaseReceived, false);
+ eventTester->mousePressReceived = false;
+
+ QPanGesture panGesture;
+ QList<QGesture*> gestureList;
+ gestureList.append(&panGesture);
+ QGestureEvent gestureEvent(gestureList);
+ currentPanState = Qt::GestureStarted;
+
+ QApplication::sendEvent(m_subject,&gestureEvent);
+
+ m_subject->d_func()->notifyChildRequestedMouseCancel();
+
+ currentPanState = Qt::GestureFinished;
+ QApplication::sendEvent(m_subject,&gestureEvent);
+
+ QCOMPARE(m_subject->mouseGrabberItem(), m_subject->d_func()->eventEater);
+
+ QApplication::sendEvent(m_subject,&mouseRelease);
+ QCOMPARE(eventTester->mousePressReceived, false);
+ QCOMPARE(eventTester->mouseMoveReceived, false);
+ QCOMPARE(eventTester->mouseReleaseReceived, false);
+ QCOMPARE(eventTester->cancelReceived, true);
+}
+
+void Ut_MScene::ignoredGestureShouldNotCancelMouseEvents()
+{
+ QGraphicsSceneMouseEvent mousePress(QEvent::GraphicsSceneMousePress);
+ mousePress.setButton(Qt::LeftButton);
+ mousePress.setPos(QPointF(100,100));
+ mousePress.setScreenPos(QPoint(100,100));
+ mousePress.setScenePos(QPointF(100,100));
+
+ QGraphicsSceneMouseEvent mouseRelease(QEvent::GraphicsSceneMouseRelease);
+ mouseRelease.setButton(Qt::LeftButton);
+ mouseRelease.setPos(QPointF(100,100));
+ mouseRelease.setScreenPos(QPoint(100,100));
+ mouseRelease.setScenePos(QPointF(100,100));
+
+ QApplication::sendEvent(m_subject,&mousePress);
+
+ //Initial press timer has been started.
+ QVERIFY(m_subject->d_func()->initialPressTimer->isActive());
+ m_subject->d_func()->initialPressTimer->stop();
+ m_subject->d_func()->_q_initialPressDeliveryTimeout();
+
+ QCOMPARE(eventTester->mousePressReceived, true);
+ QCOMPARE(eventTester->mouseMoveReceived, false);
+ QCOMPARE(eventTester->mouseReleaseReceived, false);
+ eventTester->mousePressReceived = false;
+
+ QPanGesture panGesture;
+ QList<QGesture*> gestureList;
+ gestureList.append(&panGesture);
+ QGestureEvent gestureEvent(gestureList);
+ currentPanState = Qt::GestureStarted;
+
+ QApplication::sendEvent(m_subject,&gestureEvent);
+
+ currentPanState = Qt::GestureFinished;
+ QApplication::sendEvent(m_subject,&gestureEvent);
+
+ QApplication::sendEvent(m_subject,&mouseRelease);
+ QCOMPARE(eventTester->mousePressReceived, false);
+ QCOMPARE(eventTester->mouseMoveReceived, false);
+ QCOMPARE(eventTester->mouseReleaseReceived, true);
+ QCOMPARE(eventTester->cancelReceived, false);
+}
+
QTEST_APPLESS_MAIN(Ut_MScene)
diff --git a/tests/ut_mscene/ut_mscene.h b/tests/ut_mscene/ut_mscene.h
index 2d974470..f000f31c 100644
--- a/tests/ut_mscene/ut_mscene.h
+++ b/tests/ut_mscene/ut_mscene.h
@@ -22,7 +22,7 @@
#include "mapplication.h"
#include <QObject>
#include <QtTest/QtTest>
-#include <mscene.h>
+#include "mscene.h"
class Ut_MScene : public QObject
{
@@ -35,7 +35,19 @@ private slots:
void cleanupTestCase();
void drawForeground();
+ void mousePressIsDelayed();
+ void touchBeginIsDelayed();
+
+ void mousePressAndReleaseAreDeliveredToGrabber();
+ void touchBeginAndEndAreDeliveredToGrabber();
+ void mouseMoveIsDelieveredToGrabberIfNoGestureIsRecognized();
+ void mouseReleaseResetsStateOfEventEater();
+
+ void panGestureCancelsMouseEvents();
+ void ignoredGestureShouldNotCancelMouseEvents();
+
private:
+
MApplication *app;
MScene *m_subject;
};
diff --git a/tests/ut_mscene/ut_mscene.pro b/tests/ut_mscene/ut_mscene.pro
index 9a515819..f9e8c8ad 100644
--- a/tests/ut_mscene/ut_mscene.pro
+++ b/tests/ut_mscene/ut_mscene.pro
@@ -2,30 +2,19 @@ include(../common_top.pri)
TARGET = ut_mscene
-TEST_SOURCES = \
+INCLUDEPATH += \
+ $$MSRCDIR/corelib/scene \
support_files.files += \
ut_mscene_image.svg \
ut_mscene_template.css \
-# unit test and unit
SOURCES += \
+ $$MSRCDIR/corelib/scene/mscene.cpp \
ut_mscene.cpp \
-# base classes
-SOURCES += \
-
-# service classes
-SOURCES += \
-
-# unit test and unit
HEADERS += \
ut_mscene.h \
-
-# base classes
-HEADERS += \
-
-# service classes
-HEADERS += \
+ $$MSRCDIR/corelib/scene/mscene.h \
include(../common_bot.pri)
diff --git a/tests/ut_mswiperecognizer/ut_mswiperecognizer.cpp b/tests/ut_mswiperecognizer/ut_mswiperecognizer.cpp
index 824c1534..65ec460f 100644
--- a/tests/ut_mswiperecognizer/ut_mswiperecognizer.cpp
+++ b/tests/ut_mswiperecognizer/ut_mswiperecognizer.cpp
@@ -25,7 +25,7 @@
#include <MApplication>
-#include <QGraphicsSceneMouseEvent>
+#include <QMouseEvent>
#include <QtTest/QtTest>
@@ -103,15 +103,8 @@ void Ut_MSwipeRecognizer::testCreateGesture()
void Ut_MSwipeRecognizer::testRecognize()
{
- QGraphicsSceneMouseEvent pressEvent(QEvent::GraphicsSceneMousePress);
- pressEvent.setPos(QPointF(0,0));
- pressEvent.setScenePos(QPointF(0,0));
- pressEvent.setScreenPos(QPoint(0,0));
-
- QGraphicsSceneMouseEvent moveEvent(QEvent::GraphicsSceneMouseMove);
- moveEvent.setPos(QPointF(55,0));
- moveEvent.setScenePos(QPointF(55,0));
- moveEvent.setScreenPos(QPoint(55,0));
+ QMouseEvent pressEvent(QEvent::MouseButtonPress, QPoint(0,0), QPoint(0,0), Qt::LeftButton, Qt::LeftButton, 0);
+ QMouseEvent moveEvent(QEvent::MouseMove, QPoint(100,0), QPoint(100,0), Qt::LeftButton, Qt::LeftButton, 0);
QGestureRecognizer::Result currentState;
currentState = recognizer->recognize(swipeGesture, 0, &pressEvent);
@@ -119,21 +112,12 @@ void Ut_MSwipeRecognizer::testRecognize()
currentState = recognizer->recognize(swipeGesture, 0, &moveEvent);
QCOMPARE( currentState, QGestureRecognizer::TriggerGesture);
-
}
void Ut_MSwipeRecognizer::testFastTap()
{
-
- QGraphicsSceneMouseEvent pressEvent(QEvent::GraphicsSceneMousePress);
- pressEvent.setPos(QPointF(0,0));
- pressEvent.setScenePos(QPointF(0,0));
- pressEvent.setScreenPos(QPoint(0,0));
-
- QGraphicsSceneMouseEvent releaseEvent(QEvent::GraphicsSceneMouseRelease);
- releaseEvent.setPos(QPointF(0,0));
- releaseEvent.setScenePos(QPointF(0,0));
- releaseEvent.setScreenPos(QPoint(0,0));
+ QMouseEvent pressEvent(QEvent::MouseButtonPress, QPoint(0,0), QPoint(0,0), Qt::LeftButton, Qt::LeftButton, 0);
+ QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPoint(0,0), QPoint(0,0), Qt::LeftButton, Qt::LeftButton, 0);
QGestureRecognizer::Result currentState;
currentState = recognizer->recognize(swipeGesture, 0, &pressEvent);
@@ -145,15 +129,8 @@ void Ut_MSwipeRecognizer::testFastTap()
void Ut_MSwipeRecognizer::testTimedout()
{
- QGraphicsSceneMouseEvent pressEvent(QEvent::GraphicsSceneMousePress);
- pressEvent.setPos(QPointF(0,0));
- pressEvent.setScenePos(QPointF(0,0));
- pressEvent.setScreenPos(QPoint(0,0));
-
- QGraphicsSceneMouseEvent moveEvent(QEvent::GraphicsSceneMouseMove);
- moveEvent.setPos(QPointF(30,0));
- moveEvent.setScenePos(QPointF(30,0));
- moveEvent.setScreenPos(QPoint(30,0));
+ QMouseEvent pressEvent(QEvent::MouseButtonPress, QPoint(0,0), QPoint(0,0), Qt::LeftButton, Qt::LeftButton, 0);
+ QMouseEvent moveEvent(QEvent::MouseMove, QPoint(30,0), QPoint(30,0), Qt::LeftButton, Qt::LeftButton, 0);
QGestureRecognizer::Result currentState;
currentState = recognizer->recognize(swipeGesture, 0, &pressEvent);
@@ -168,46 +145,31 @@ void Ut_MSwipeRecognizer::testTimedout()
void Ut_MSwipeRecognizer::testZigzagged()
{
- QGraphicsSceneMouseEvent pressEvent(QEvent::GraphicsSceneMousePress);
- pressEvent.setPos(QPointF(0,0));
- pressEvent.setScenePos(QPointF(0,0));
- pressEvent.setScreenPos(QPoint(0,0));
-
- QGraphicsSceneMouseEvent moveEvent(QEvent::GraphicsSceneMouseMove);
- moveEvent.setPos(QPointF(55,0));
- moveEvent.setScenePos(QPointF(55,0));
- moveEvent.setScreenPos(QPoint(55,0));
+ QMouseEvent pressEvent(QEvent::MouseButtonPress, QPoint(0,0), QPoint(0,0), Qt::LeftButton, Qt::LeftButton, 0);
+ QMouseEvent moveEvent1(QEvent::MouseMove, QPoint(55,0), QPoint(55,0), Qt::LeftButton, Qt::LeftButton, 0);
+ QMouseEvent moveEvent2(QEvent::MouseMove, QPoint(-100,0), QPoint(-100,0), Qt::LeftButton, Qt::LeftButton, 0);
QGestureRecognizer::Result currentState;
currentState = recognizer->recognize(swipeGesture, 0, &pressEvent);
QCOMPARE( currentState, QGestureRecognizer::MayBeGesture);
- currentState = recognizer->recognize(swipeGesture, 0, &moveEvent);
+ currentState = recognizer->recognize(swipeGesture, 0, &moveEvent2);
QCOMPARE( currentState, QGestureRecognizer::TriggerGesture);
- moveEvent.setPos(QPointF(-100,0));
- moveEvent.setScenePos(QPointF(-100,0));
- moveEvent.setScreenPos(QPoint(-100,0));
-
currentGestureState = Qt::GestureStarted;
- currentState = recognizer->recognize(swipeGesture, 0, &moveEvent);
+ currentState = recognizer->recognize(swipeGesture, 0, &moveEvent2);
QCOMPARE( currentState, QGestureRecognizer::CancelGesture);
}
void Ut_MSwipeRecognizer::testSnappingToRightAngles()
{
-
- QGraphicsSceneMouseEvent pressEvent(QEvent::GraphicsSceneMousePress);
- pressEvent.setPos(QPointF(0,0));
- pressEvent.setScenePos(QPointF(0,0));
- pressEvent.setScreenPos(QPoint(0,0));
-
- QGraphicsSceneMouseEvent moveEvent(QEvent::GraphicsSceneMouseMove);
- moveEvent.setPos(QPointF(100,10));
- moveEvent.setScenePos(QPointF(100,10));
- moveEvent.setScreenPos(QPoint(100,10));
+ QMouseEvent pressEvent(QEvent::MouseButtonPress,QPoint(0,0), QPoint(0,0), Qt::LeftButton, Qt::LeftButton, 0);
+ QMouseEvent moveEvent1(QEvent::MouseMove, QPoint(100,10), QPoint(100,10), Qt::LeftButton, Qt::LeftButton, 0);
+ QMouseEvent moveEvent2(QEvent::MouseMove, QPoint(10,-100), QPoint(10,-100), Qt::LeftButton, Qt::LeftButton, 0);
+ QMouseEvent moveEvent3(QEvent::MouseMove, QPoint(-100,-10), QPoint(-100,-10), Qt::LeftButton, Qt::LeftButton, 0);
+ QMouseEvent moveEvent4(QEvent::MouseMove, QPoint(10,100), QPoint(10,100), Qt::LeftButton, Qt::LeftButton, 0);
currentGestureState = Qt::NoGesture;
@@ -215,7 +177,7 @@ void Ut_MSwipeRecognizer::testSnappingToRightAngles()
currentState = recognizer->recognize(swipeGesture, 0, &pressEvent);
QCOMPARE( currentState, QGestureRecognizer::MayBeGesture);
- currentState = recognizer->recognize(swipeGesture, 0, &moveEvent);
+ currentState = recognizer->recognize(swipeGesture, 0, &moveEvent1);
QCOMPARE( currentState, QGestureRecognizer::TriggerGesture);
QCOMPARE( swipeGesture->swipeAngle(), 0.0);
@@ -223,14 +185,10 @@ void Ut_MSwipeRecognizer::testSnappingToRightAngles()
currentGestureState = Qt::NoGesture;
- moveEvent.setPos(QPointF(10,-100));
- moveEvent.setScenePos(QPointF(10,-100));
- moveEvent.setScreenPos(QPoint(10,-100));
-
currentState = recognizer->recognize(swipeGesture, 0, &pressEvent);
QCOMPARE( currentState, QGestureRecognizer::MayBeGesture);
- currentState = recognizer->recognize(swipeGesture, 0, &moveEvent);
+ currentState = recognizer->recognize(swipeGesture, 0, &moveEvent2);
QCOMPARE( currentState, QGestureRecognizer::TriggerGesture);
QCOMPARE( swipeGesture->swipeAngle(), 90.0);
@@ -238,14 +196,10 @@ void Ut_MSwipeRecognizer::testSnappingToRightAngles()
currentGestureState = Qt::NoGesture;
- moveEvent.setPos(QPointF(-100,-10));
- moveEvent.setScenePos(QPointF(-100,-10));
- moveEvent.setScreenPos(QPoint(-100,-10));
-
currentState = recognizer->recognize(swipeGesture, 0, &pressEvent);
QCOMPARE( currentState, QGestureRecognizer::MayBeGesture);
- currentState = recognizer->recognize(swipeGesture, 0, &moveEvent);
+ currentState = recognizer->recognize(swipeGesture, 0, &moveEvent3);
QCOMPARE( currentState, QGestureRecognizer::TriggerGesture);
QCOMPARE( swipeGesture->swipeAngle(), 180.0);
@@ -253,14 +207,10 @@ void Ut_MSwipeRecognizer::testSnappingToRightAngles()
currentGestureState = Qt::NoGesture;
- moveEvent.setPos(QPointF(10,100));
- moveEvent.setScenePos(QPointF(10,100));
- moveEvent.setScreenPos(QPoint(10,100));
-
currentState = recognizer->recognize(swipeGesture, 0, &pressEvent);
QCOMPARE( currentState, QGestureRecognizer::MayBeGesture);
- currentState = recognizer->recognize(swipeGesture, 0, &moveEvent);
+ currentState = recognizer->recognize(swipeGesture, 0, &moveEvent4);
QCOMPARE( currentState, QGestureRecognizer::TriggerGesture);
QCOMPARE( swipeGesture->swipeAngle(), 270.0);
}
diff --git a/tests/ut_mtoolbar/ut_mtoolbar.pro b/tests/ut_mtoolbar/ut_mtoolbar.pro
index d7eb10a1..214a3edf 100644
--- a/tests/ut_mtoolbar/ut_mtoolbar.pro
+++ b/tests/ut_mtoolbar/ut_mtoolbar.pro
@@ -1,18 +1,21 @@
include(../common_top.pri)
TARGET = ut_mtoolbar
-
-INCLUDEPATH += $$MSRCDIR/corelib/widgets $$MSRCDIR/corelib/style
+INCLUDEPATH += $$MSRCDIR/corelib/widgets \
+ $$MSRCDIR/corelib/style \
+ $$MSRCDIR/corelib/scene
SOURCES += \
ut_mtoolbar.cpp \
$$MSRCDIR/corelib/widgets/mtoolbar.cpp \
$$MSRCDIR/corelib/widgets/core/mwidgetcontroller.cpp \
$$MSRCDIR/corelib/widgets/core/mwidget.cpp \
-
+ $$MSRCDIR/corelib/scene/mscene.cpp \
+
HEADERS += \
ut_mtoolbar.h \
$$MSRCDIR/corelib/widgets/mtoolbar_p.h \
$$MSRCDIR/corelib/widgets/core/mwidgetcontroller_p.h \
+ $$MSRCDIR/corelib/scene/mscene.h \
include(../common_bot.pri)