aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/controls/data/tst_stackview.qml
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/controls/data/tst_stackview.qml')
-rw-r--r--tests/auto/controls/data/tst_stackview.qml38
1 files changed, 32 insertions, 6 deletions
diff --git a/tests/auto/controls/data/tst_stackview.qml b/tests/auto/controls/data/tst_stackview.qml
index c15ce8ea..767ec818 100644
--- a/tests/auto/controls/data/tst_stackview.qml
+++ b/tests/auto/controls/data/tst_stackview.qml
@@ -804,7 +804,10 @@ TestCase {
var item = control.push(component, StackView.Immediate)
verify(item)
- item.StackView.onRemoved.connect(function() { control.push(component, StackView.Immediate) } )
+ item.StackView.onRemoved.connect(function() {
+ ignoreWarning(/.*QML StackView: cannot push while already in the process of completing a pop/)
+ control.push(component, StackView.Immediate)
+ })
// don't crash (QTBUG-62153)
control.pop(StackView.Immediate)
@@ -1287,7 +1290,7 @@ TestCase {
control.push(container.clearUponDestructionComponent, StackView.Immediate)
// Shouldn't crash.
- ignoreWarning(new RegExp(".*cannot clear while already in the process of removing elements"))
+ ignoreWarning(/.*cannot clear while already in the process of completing a clear/)
control.clear(StackView.Immediate)
}
@@ -1301,7 +1304,7 @@ TestCase {
// Pop all items except the first, removing the second item we pushed in the process.
// Shouldn't crash.
- ignoreWarning(new RegExp(".*cannot clear while already in the process of removing elements"))
+ ignoreWarning(/.*cannot clear while already in the process of completing a pop/)
control.pop(null, StackView.Immediate)
}
@@ -1316,7 +1319,7 @@ TestCase {
control.push(container.clearUponDestructionComponent, StackView.Immediate)
// Pop the top item, then pop down to the first item in response.
- ignoreWarning(new RegExp(".*cannot pop while already in the process of removing elements"))
+ ignoreWarning(/.*cannot pop while already in the process of completing a pop/)
control.pop(StackView.Immediate)
}
@@ -1329,7 +1332,7 @@ TestCase {
control.push(container.clearUponDestructionComponent, StackView.Immediate)
// Replace the top item, then clear in response.
- ignoreWarning(new RegExp(".*cannot clear while already in the process of removing elements"))
+ ignoreWarning(/.*cannot clear while already in the process of completing a replace/)
control.replace(component, StackView.Immediate)
}
@@ -1342,7 +1345,7 @@ TestCase {
control.push(container.clearUponDestructionComponent, StackView.Immediate)
// Replace the top item, then clear in response.
- ignoreWarning(new RegExp(".*cannot replace while already in the process of removing elements"))
+ ignoreWarning(/.*cannot replace while already in the process of completing a clear/)
control.clear(StackView.Immediate)
}
@@ -1404,4 +1407,27 @@ TestCase {
tryCompare(control, "busy", false)
compare(redRect.visible, true)
}
+
+ // QTBUG-84381
+ function test_clearAndPushAfterDepthChange() {
+ var control = createTemporaryObject(stackView, testCase, {
+ popEnter: null, popExit: null, pushEnter: null,
+ pushExit: null, replaceEnter: null, replaceExit: null
+ })
+ verify(control)
+
+ control.depthChanged.connect(function() {
+ if (control.depth === 2) {
+ // Shouldn't assert.
+ ignoreWarning(/.*QML StackView: cannot clear while already in the process of completing a push/)
+ control.clear()
+ // Shouldn't crash.
+ ignoreWarning(/.*QML StackView: cannot push while already in the process of completing a push/)
+ control.push(component)
+ }
+ })
+
+ control.push(component)
+ control.push(component)
+ }
}