aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorAndras Becsi <andras.becsi@nokia.com>2012-01-23 17:38:25 +0100
committerQt by Nokia <qt-info@nokia.com>2012-01-24 05:49:48 +0100
commit1ea7442ec3a3560697c178c5b37ac428e95560f6 (patch)
tree0c0d7721550e7aca77244efc6b99d03db73160b9 /tests
parent39f4b17c18b55bb2abe2be8e39bff8d8cf8f3b10 (diff)
QQuickCanvas::event should return true if the touch event was accepted
If QQuickCanvas::event delivers a touch event and it is accepted the control ends up in QWindow::event which invalidates the event. These touch events end up as if they were unhadled which causes Qt to automatically synthesize mouse events even for accepted touch events. Add a unit test for testing this behavior. Change-Id: I83d4aeafee1ea7ec5d219e4b45aae699188717c3 Reviewed-by: Zeno Albisser <zeno.albisser@nokia.com> Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/qtquick2/qquickitem/tst_qquickitem.cpp40
1 files changed, 40 insertions, 0 deletions
diff --git a/tests/auto/qtquick2/qquickitem/tst_qquickitem.cpp b/tests/auto/qtquick2/qquickitem/tst_qquickitem.cpp
index a3c64297ab..dccf055ae8 100644
--- a/tests/auto/qtquick2/qquickitem/tst_qquickitem.cpp
+++ b/tests/auto/qtquick2/qquickitem/tst_qquickitem.cpp
@@ -66,9 +66,23 @@ protected:
virtual void focusOutEvent(QFocusEvent *) { Q_ASSERT(focused); focused = false; }
virtual void mousePressEvent(QMouseEvent *event) { event->accept(); ++pressCount; }
virtual void mouseReleaseEvent(QMouseEvent *event) { event->accept(); ++releaseCount; }
+ virtual void touchEvent(QTouchEvent *event) { event->accept(); }
virtual void wheelEvent(QWheelEvent *event) { event->accept(); ++wheelCount; }
};
+class TestCanvas: public QQuickCanvas
+{
+public:
+ TestCanvas()
+ : QQuickCanvas()
+ {}
+
+ virtual bool event(QEvent *event)
+ {
+ return QQuickCanvas::event(event);
+ }
+};
+
class TestPolishItem : public QQuickItem
{
Q_OBJECT
@@ -124,6 +138,7 @@ private slots:
void enabled();
void mouseGrab();
+ void touchEventAccept();
void polishOutsideAnimation();
void polishOnCompleted();
@@ -862,6 +877,31 @@ void tst_qquickitem::mouseGrab()
delete canvas;
}
+void tst_qquickitem::touchEventAccept()
+{
+ TestCanvas *canvas = new TestCanvas;
+ canvas->resize(100, 100);
+ canvas->show();
+
+ TestItem *item = new TestItem;
+ item->setSize(QSizeF(100, 100));
+ item->setParentItem(canvas->rootItem());
+
+ static QTouchDevice* device = new QTouchDevice;
+ device->setType(QTouchDevice::TouchScreen);
+ QWindowSystemInterface::registerTouchDevice(device);
+
+ QTouchEvent *event = new QTouchEvent(QEvent::TouchBegin, device);
+
+ bool accepted = canvas->event(event);
+
+ QVERIFY(accepted && event->isAccepted());
+
+ delete event;
+ delete item;
+ delete canvas;
+}
+
void tst_qquickitem::polishOutsideAnimation()
{
QQuickCanvas *canvas = new QQuickCanvas;