diff options
author | Sami Nurmenniemi <sami.nurmenniemi@qt.io> | 2017-12-14 13:23:11 +0200 |
---|---|---|
committer | Sami Nurmenniemi <sami.nurmenniemi@qt.io> | 2018-02-19 09:14:21 +0000 |
commit | 258f9e054b7b887985d7505107f59f1bd5acaf25 (patch) | |
tree | 3572cd88e1d3611600f5e699eb26913ae79999e8 /tests/auto/quick/qquickitem/tst_qquickitem.cpp | |
parent | 6c8ac41508f985594aac643a2fd4ca75dfdeab98 (diff) |
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 <shawn.rutledge@qt.io>
Diffstat (limited to 'tests/auto/quick/qquickitem/tst_qquickitem.cpp')
-rw-r--r-- | tests/auto/quick/qquickitem/tst_qquickitem.cpp | 52 |
1 files changed, 52 insertions, 0 deletions
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 <QSignalSpy> +#ifdef TEST_QTBUG_60123 +#include <QWidget> +#include <QMainWindow> +#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" |