diff options
Diffstat (limited to 'tests/auto')
3 files changed, 52 insertions, 2 deletions
diff --git a/tests/auto/qml/debugger/qpacketprotocol/tst_qpacketprotocol.cpp b/tests/auto/qml/debugger/qpacketprotocol/tst_qpacketprotocol.cpp index 26919af1b6..f91d0135a9 100644 --- a/tests/auto/qml/debugger/qpacketprotocol/tst_qpacketprotocol.cpp +++ b/tests/auto/qml/debugger/qpacketprotocol/tst_qpacketprotocol.cpp @@ -84,10 +84,15 @@ void tst_QPacketProtocol::init() QVERIFY(m_server->listen(QHostAddress("127.0.0.1"))); m_client = new QTcpSocket(this); + + QSignalSpy serverSpy(m_server, SIGNAL(newConnection())); + QSignalSpy clientSpy(m_client, SIGNAL(connected())); + m_client->connectToHost(m_server->serverAddress(), m_server->serverPort()); - QVERIFY(m_client->waitForConnected()); - QVERIFY(m_server->waitForNewConnection(10000)); + QVERIFY(clientSpy.count() > 0 || clientSpy.wait()); + QVERIFY(serverSpy.count() > 0 || serverSpy.wait()); + m_serverConn = m_server->nextPendingConnection(); } 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() { |