summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorBernd Weimer <bernd.weimer@qt.io>2023-11-21 13:56:38 +0100
committerBernd Weimer <bernd.weimer@qt.io>2023-11-28 11:39:08 +0100
commita4d898354a61618cf998569830b426428ab77774 (patch)
tree203b006f9f27c1d037026a10ecad5cfb95277f6f /tests
parent86a6f3eb0f7afb4826786dc26cdba257047efd8a (diff)
Align closing ApplicationManagerWindows
In-process sub-windows would not be closed if a parent was closed. Out-of-process ApplicationManagerWindows with an Item parent would end up parentless - for windows only the window hierarchy matters, items can be neglected. Change-Id: Ib771eb4661f2fc2828b79efb644988d08e24e5c0 Reviewed-by: Robert Griebl <robert.griebl@qt.io>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/qml/windowmapping/tst_windowmapping.qml63
1 files changed, 51 insertions, 12 deletions
diff --git a/tests/auto/qml/windowmapping/tst_windowmapping.qml b/tests/auto/qml/windowmapping/tst_windowmapping.qml
index 99f7e1ed..cbfb2ca1 100644
--- a/tests/auto/qml/windowmapping/tst_windowmapping.qml
+++ b/tests/auto/qml/windowmapping/tst_windowmapping.qml
@@ -17,7 +17,7 @@ TestCase {
property int spyTimeout: 5000 * AmTest.timeoutFactor
property var lastWindowAdded
- WindowItem {
+ component WindowChrome: WindowItem {
id: chrome
anchors.fill: parent
@@ -28,16 +28,16 @@ TestCase {
chrome.window = null;
}
}
+ }
+
+ WindowChrome {
+ id: topChrome
- WindowItem {
+ WindowChrome {
id: subChrome
- anchors.fill: parent
- Connections {
- target: subChrome.window
- function onContentStateChanged() {
- if (subChrome.window.contentState === WindowObject.NoSurface)
- subChrome.window = null;
- }
+
+ WindowChrome {
+ id: sub2Chrome
}
}
}
@@ -47,8 +47,10 @@ TestCase {
function onWindowAdded(window) {
if (window.windowProperty("type") === "sub")
subChrome.window = window;
+ else if (window.windowProperty("type") === "sub2")
+ sub2Chrome.window = window;
else
- chrome.window = window;
+ topChrome.window = window;
testCase.lastWindowAdded = window;
}
@@ -182,6 +184,43 @@ TestCase {
tryCompare(WindowManager, "count", expectedWindowCount, spyTimeout);
}
+ function test_quitOnLastClosed() {
+ var app = ApplicationManager.application("test.winmap.amwin2");
+
+ tryCompare(WindowManager, "count", 0, spyTimeout);
+ app.start("show-main");
+ tryCompare(WindowManager, "count", 1, spyTimeout);
+ compare(app.runState, Am.Running);
+ topChrome.window.close();
+ AmTest.aboutToBlock();
+ tryCompare(app, "runState", Am.NotRunning, spyTimeout);
+
+ tryCompare(WindowManager, "count", 0, spyTimeout);
+ app.start("show-main");
+ tryCompare(WindowManager, "count", 1, spyTimeout);
+ app.start("show-sub");
+ tryCompare(WindowManager, "count", 2, spyTimeout);
+ app.start("show-sub2");
+ tryCompare(WindowManager, "count", 3, spyTimeout);
+ compare(app.runState, Am.Running);
+ topChrome.window.close();
+ AmTest.aboutToBlock();
+ tryCompare(app, "runState", Am.NotRunning, spyTimeout);
+
+ tryCompare(WindowManager, "count", 0, spyTimeout);
+ app.start("show-main");
+ tryCompare(WindowManager, "count", 1, spyTimeout);
+ app.start("show-sub");
+ tryCompare(WindowManager, "count", 2, spyTimeout);
+ tryVerify(function() { return subChrome != null }, spyTimeout);
+ compare(app.runState, Am.Running);
+ subChrome.window.close();
+ AmTest.aboutToBlock();
+ tryCompare(subChrome, "window", null, spyTimeout);
+ wait(200);
+ compare(app.runState, Am.Running);
+ }
+
function test_default_data() {
return [ { tag: "ApplicationManagerWindow", appId: "test.winmap.amwin" },
// skipping QtObject, as it doesn't show anything
@@ -196,10 +235,10 @@ TestCase {
compare(WindowManager.count, 0);
var app = ApplicationManager.application(data.appId);
- verify(chrome.window === null);
+ verify(topChrome.window === null);
app.start();
tryCompare(WindowManager, "count", 1, spyTimeout);
- tryVerify(function () { return chrome.window !== null }, spyTimeout);
+ tryVerify(function () { return topChrome.window !== null }, spyTimeout);
app.stop();
tryCompare(WindowManager, "count", 0, spyTimeout);