From 258f9e054b7b887985d7505107f59f1bd5acaf25 Mon Sep 17 00:00:00 2001 From: Sami Nurmenniemi Date: Thu, 14 Dec 2017 13:23:11 +0200 Subject: Add test for detecting invalid mouse button cancel event Commit e0c30279ec1fad88346ed3fb483bc3c672fdd01b has already fixed the issue tested by this change. Task-number: QTBUG-60123 Change-Id: I0e378a7b1586f4e6c43246fca9d12719f62b3275 Reviewed-by: Shawn Rutledge --- tests/auto/quick/qquickitem/tst_qquickitem.cpp | 52 ++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) (limited to 'tests/auto/quick/qquickitem/tst_qquickitem.cpp') diff --git a/tests/auto/quick/qquickitem/tst_qquickitem.cpp b/tests/auto/quick/qquickitem/tst_qquickitem.cpp index f4434d9d3f..f5e8c6858a 100644 --- a/tests/auto/quick/qquickitem/tst_qquickitem.cpp +++ b/tests/auto/quick/qquickitem/tst_qquickitem.cpp @@ -41,6 +41,11 @@ #include "../shared/viewtestutil.h" #include +#ifdef TEST_QTBUG_60123 +#include +#include +#endif + class TestItem : public QQuickItem { Q_OBJECT @@ -188,6 +193,10 @@ private slots: void shortcutOverride(); +#ifdef TEST_QTBUG_60123 + void qtBug60123(); +#endif + private: enum PaintOrderOp { @@ -2092,6 +2101,49 @@ void tst_qquickitem::shortcutOverride() QCOMPARE(view.rootObject()->property("shortcutActivationCount").toInt(), 1); } +#ifdef TEST_QTBUG_60123 +void tst_qquickitem::qtBug60123() +{ + QMainWindow main; + + QQuickView window; + QQuickView window2; + window.setSource(testFileUrl("mainWindowQtBug60123.qml")); + window2.setSource(testFileUrl("mainWindowQtBug60123.qml")); + + QWidget *baseWidget = new QWidget(&main); + main.resize(400, 200); + baseWidget->resize(400, 200); + baseWidget->setMaximumHeight(200); + baseWidget->setMaximumWidth(400); + + // Create container widgets for both windows + QWidget *containers = QWidget::createWindowContainer(&window, baseWidget); + containers->setGeometry(0, 0, 400, 200); + QWidget* containers2 = QWidget::createWindowContainer(&window2, baseWidget); + containers2->setGeometry(50, 50, 300, 150); + + // Show and activate the main window + main.show(); + QTest::qWaitForWindowActive(&main); + + // Activate window, test press and release events + auto activateWindowAndTestPress = [] (QQuickView* testWindow) { + testWindow->requestActivate(); + QTest::qWaitForWindowActive(testWindow); + QTest::mousePress(testWindow, Qt::LeftButton, 0, QPoint(10, 10)); + QCOMPARE(testWindow->rootObject()->property("lastEvent").toString(), QString("pressed")); + QTest::mouseRelease(testWindow, Qt::LeftButton, 0, QPoint(10, 10)); + QCOMPARE(testWindow->rootObject()->property("lastEvent").toString(), QString("released")); + }; + + // First press after switching focus window resulted in cancelled event + activateWindowAndTestPress(&window); + activateWindowAndTestPress(&window2); + activateWindowAndTestPress(&window); +} +#endif + QTEST_MAIN(tst_qquickitem) #include "tst_qquickitem.moc" -- cgit v1.2.3