aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/quick/qquickitem/tst_qquickitem.cpp
diff options
context:
space:
mode:
authorSami Nurmenniemi <sami.nurmenniemi@qt.io>2017-12-14 13:23:11 +0200
committerSami Nurmenniemi <sami.nurmenniemi@qt.io>2018-02-19 09:14:21 +0000
commit258f9e054b7b887985d7505107f59f1bd5acaf25 (patch)
tree3572cd88e1d3611600f5e699eb26913ae79999e8 /tests/auto/quick/qquickitem/tst_qquickitem.cpp
parent6c8ac41508f985594aac643a2fd4ca75dfdeab98 (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.cpp52
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"