diff options
Diffstat (limited to 'tests/auto/widgets/graphicsview/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp')
-rw-r--r-- | tests/auto/widgets/graphicsview/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp | 113 |
1 files changed, 91 insertions, 22 deletions
diff --git a/tests/auto/widgets/graphicsview/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp b/tests/auto/widgets/graphicsview/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp index cd40c5541c..8760dc176c 100644 --- a/tests/auto/widgets/graphicsview/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp +++ b/tests/auto/widgets/graphicsview/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp @@ -97,8 +97,8 @@ private slots: void paint_2(); void setWidget_data(); void setWidget(); - void eventFilter_data(); - void eventFilter(); + void testEventFilter_data(); + void testEventFilter(); void focusInEvent_data(); void focusInEvent(); void focusInEventNoWidget(); @@ -179,6 +179,7 @@ private slots: void mapToGlobal(); void mapToGlobalWithoutScene(); void QTBUG_43780_visibility(); + void forwardTouchEvent(); }; // Subclass that exposes the protected functions. @@ -314,7 +315,7 @@ void tst_QGraphicsProxyWidget::qgraphicsproxywidget() SubQGraphicsProxyWidget proxy; proxy.paint(0, 0, 0); proxy.setWidget(0); - QVERIFY(proxy.type() == QGraphicsProxyWidget::Type); + QCOMPARE(proxy.type(), int(QGraphicsProxyWidget::Type)); QVERIFY(!proxy.widget()); QEvent event(QEvent::None); proxy.call_eventFilter(0, &event); @@ -533,7 +534,7 @@ void tst_QGraphicsProxyWidget::setWidget() } Q_DECLARE_METATYPE(QEvent::Type) -void tst_QGraphicsProxyWidget::eventFilter_data() +void tst_QGraphicsProxyWidget::testEventFilter_data() { QTest::addColumn<QEvent::Type>("eventType"); QTest::addColumn<bool>("fromObject"); // big grin evil @@ -552,7 +553,7 @@ void tst_QGraphicsProxyWidget::eventFilter_data() } // protected bool eventFilter(QObject* object, QEvent* event) -void tst_QGraphicsProxyWidget::eventFilter() +void tst_QGraphicsProxyWidget::testEventFilter() { QFETCH(QEvent::Type, eventType); QFETCH(bool, fromObject); @@ -1223,6 +1224,7 @@ void tst_QGraphicsProxyWidget::mousePressReleaseEvent() QGraphicsScene scene; QGraphicsView view(&scene); + view.resize(500, 500); view.show(); QVERIFY(QTest::qWaitForWindowExposed(&view)); @@ -1231,7 +1233,6 @@ void tst_QGraphicsProxyWidget::mousePressReleaseEvent() QPushButton *widget = new QPushButton; QSignalSpy spy(widget, SIGNAL(clicked())); widget->resize(50, 50); - view.resize(100, 100); if (hasWidget) { proxy->setWidget(widget); proxy->show(); @@ -3017,36 +3018,36 @@ void tst_QGraphicsProxyWidget::createProxyForChildWidget() layout->addWidget(rightDial); window.setLayout(layout); - QVERIFY(window.graphicsProxyWidget() == 0); - QVERIFY(checkbox->graphicsProxyWidget() == 0); + QVERIFY(!window.graphicsProxyWidget()); + QVERIFY(!checkbox->graphicsProxyWidget()); QGraphicsProxyWidget *windowProxy = scene.addWidget(&window); QGraphicsView view(&scene); view.show(); view.resize(500,500); - QVERIFY(window.graphicsProxyWidget() == windowProxy); - QVERIFY(box->graphicsProxyWidget() == 0); - QVERIFY(checkbox->graphicsProxyWidget() == 0); + QCOMPARE(window.graphicsProxyWidget(), windowProxy); + QVERIFY(!box->graphicsProxyWidget()); + QVERIFY(!checkbox->graphicsProxyWidget()); QPointer<QGraphicsProxyWidget> checkboxProxy = windowProxy->createProxyForChildWidget(checkbox); QGraphicsProxyWidget *boxProxy = box->graphicsProxyWidget(); QVERIFY(boxProxy); - QVERIFY(checkbox->graphicsProxyWidget() == checkboxProxy); - QVERIFY(checkboxProxy->parentItem() == boxProxy); - QVERIFY(boxProxy->parentItem() == windowProxy); + QCOMPARE(checkbox->graphicsProxyWidget(), checkboxProxy.data()); + QCOMPARE(checkboxProxy->parentItem(), boxProxy); + QCOMPARE(boxProxy->parentItem(), windowProxy); QVERIFY(checkboxProxy->mapToScene(QPointF()) == checkbox->mapTo(&window, QPoint())); - QVERIFY(checkboxProxy->size() == checkbox->size()); - QVERIFY(boxProxy->size() == box->size()); + QCOMPARE(checkboxProxy->size().toSize(), checkbox->size()); + QCOMPARE(boxProxy->size().toSize(), box->size()); window.resize(500,500); - QVERIFY(windowProxy->size() == QSize(500,500)); + QCOMPARE(windowProxy->size().toSize(), QSize(500,500)); QVERIFY(checkboxProxy->mapToScene(QPointF()) == checkbox->mapTo(&window, QPoint())); - QVERIFY(checkboxProxy->size() == checkbox->size()); - QVERIFY(boxProxy->size() == box->size()); + QCOMPARE(checkboxProxy->size().toSize(), checkbox->size()); + QCOMPARE(boxProxy->size().toSize(), box->size()); QTest::qWait(10); @@ -3064,9 +3065,9 @@ void tst_QGraphicsProxyWidget::createProxyForChildWidget() boxProxy->setWidget(0); - QVERIFY(checkbox->graphicsProxyWidget() == 0); - QVERIFY(box->graphicsProxyWidget() == 0); - QVERIFY(checkboxProxy == 0); + QVERIFY(!checkbox->graphicsProxyWidget()); + QVERIFY(!box->graphicsProxyWidget()); + QVERIFY(checkboxProxy.isNull()); delete boxProxy; } @@ -3760,5 +3761,73 @@ void tst_QGraphicsProxyWidget::QTBUG_43780_visibility() QVERIFY(comboPopup->isVisible()); } +class TouchWidget : public QWidget +{ +public: + TouchWidget(QWidget *parent = 0) : QWidget(parent) {} + + bool event(QEvent *event) + { + switch (event->type()) { + case QEvent::TouchBegin: + case QEvent::TouchUpdate: + case QEvent::TouchEnd: + event->accept(); + return true; + break; + default: + break; + } + + return QWidget::event(event); + } +}; + +// QTBUG_45737 +void tst_QGraphicsProxyWidget::forwardTouchEvent() +{ + QGraphicsScene *scene = new QGraphicsScene; + + TouchWidget *widget = new TouchWidget; + + widget->setAttribute(Qt::WA_AcceptTouchEvents); + + QGraphicsProxyWidget *proxy = new QGraphicsProxyWidget; + + proxy->setAcceptTouchEvents(true); + proxy->setWidget(widget); + + scene->addItem(proxy); + + QGraphicsView *view = new QGraphicsView(scene); + + view->show(); + + EventSpy eventSpy(widget); + + QTouchDevice *device = new QTouchDevice; + device->setType(QTouchDevice::TouchScreen); + QWindowSystemInterface::registerTouchDevice(device); + + QCOMPARE(eventSpy.counts[QEvent::TouchBegin], 0); + QCOMPARE(eventSpy.counts[QEvent::TouchUpdate], 0); + QCOMPARE(eventSpy.counts[QEvent::TouchEnd], 0); + + QTest::touchEvent(view, device).press(0, QPoint(10, 10), view); + QTest::touchEvent(view, device).move(0, QPoint(15, 15), view); + QTest::touchEvent(view, device).move(0, QPoint(16, 16), view); + QTest::touchEvent(view, device).release(0, QPoint(15, 15), view); + + QApplication::processEvents(); + + QCOMPARE(eventSpy.counts[QEvent::TouchBegin], 1); + QCOMPARE(eventSpy.counts[QEvent::TouchUpdate], 2); + QCOMPARE(eventSpy.counts[QEvent::TouchEnd], 1); + + delete view; + delete proxy; + delete scene; +} + QTEST_MAIN(tst_QGraphicsProxyWidget) #include "tst_qgraphicsproxywidget.moc" |