aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/quick/qquickwindow
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@digia.com>2014-07-02 09:58:13 +0200
committerFrederik Gladhorn <frederik.gladhorn@digia.com>2014-07-02 10:32:33 +0200
commit41e924eb6e1c690bc81d095fc5e8f57244aae964 (patch)
treeb459dfa150530443901be68471df88c69ca7a7d4 /tests/auto/quick/qquickwindow
parentd51afdb74fdcb9a5c7e1fdaa763325c78d794d06 (diff)
parent87a5889029aed8c53a4b02a42804d036614db36b (diff)
Merge remote-tracking branch 'origin/5.3' into dev
Conflicts: .qmake.conf examples/quick/scenegraph/openglunderqml/squircle.h src/quick/doc/src/qmltypereference.qdoc src/quick/scenegraph/qsgthreadedrenderloop.cpp Change-Id: Ife4f4b897044a7ffcd0710493c6aed1d87cf1ef9
Diffstat (limited to 'tests/auto/quick/qquickwindow')
-rw-r--r--tests/auto/quick/qquickwindow/data/unloadSubWindow.qml22
-rw-r--r--tests/auto/quick/qquickwindow/tst_qquickwindow.cpp23
2 files changed, 45 insertions, 0 deletions
diff --git a/tests/auto/quick/qquickwindow/data/unloadSubWindow.qml b/tests/auto/quick/qquickwindow/data/unloadSubWindow.qml
new file mode 100644
index 0000000000..bf9df4867d
--- /dev/null
+++ b/tests/auto/quick/qquickwindow/data/unloadSubWindow.qml
@@ -0,0 +1,22 @@
+import QtQuick 2.3
+import QtQuick.Window 2.2
+
+Window {
+ id: root
+ property var transientWindow
+ property Loader loader1: Loader {
+ sourceComponent: Item {
+ Loader {
+ id: loader2
+ sourceComponent : Window {
+ id: inner
+ visible: true
+ Component.onCompleted: root.transientWindow = inner
+ }
+ }
+ Component.onDestruction: {
+ loader2.active = false;
+ }
+ }
+ }
+}
diff --git a/tests/auto/quick/qquickwindow/tst_qquickwindow.cpp b/tests/auto/quick/qquickwindow/tst_qquickwindow.cpp
index a2e2980223..17773fcfc4 100644
--- a/tests/auto/quick/qquickwindow/tst_qquickwindow.cpp
+++ b/tests/auto/quick/qquickwindow/tst_qquickwindow.cpp
@@ -47,6 +47,7 @@
#include <QtQml/QQmlEngine>
#include <QtQml/QQmlComponent>
#include <QtQuick/private/qquickrectangle_p.h>
+#include <QtQuick/private/qquickloader_p.h>
#include "../../shared/util.h"
#include "../shared/visualtestutil.h"
#include "../shared/viewtestutil.h"
@@ -349,6 +350,8 @@ private slots:
void crashWhenHoverItemDeleted();
+ void unloadSubWindow();
+
void qobjectEventFilter_touch();
void qobjectEventFilter_key();
void qobjectEventFilter_mouse();
@@ -1752,6 +1755,26 @@ void tst_qquickwindow::crashWhenHoverItemDeleted()
}
}
+// QTBUG-33436
+void tst_qquickwindow::unloadSubWindow()
+{
+ QQmlEngine engine;
+ QQmlComponent component(&engine);
+ component.loadUrl(testFileUrl("unloadSubWindow.qml"));
+ QQuickWindow *window = qobject_cast<QQuickWindow *>(component.create());
+ QVERIFY(window);
+ window->show();
+ QTest::qWaitForWindowExposed(window);
+ QQuickWindow *transient = Q_NULLPTR;
+ QTRY_VERIFY(transient = window->property("transientWindow").value<QQuickWindow*>());
+ QTest::qWaitForWindowExposed(transient);
+
+ // Unload the inner window (in nested Loaders) and make sure it doesn't crash
+ QQuickLoader *loader = window->property("loader1").value<QQuickLoader*>();
+ loader->setActive(false);
+ QTRY_VERIFY(!transient->isVisible());
+}
+
// QTBUG-32004
void tst_qquickwindow::qobjectEventFilter_touch()
{