aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/templates/qquickstackview_p.cpp12
-rw-r--r--tests/auto/controls/data/tst_stackview.qml13
2 files changed, 19 insertions, 6 deletions
diff --git a/src/templates/qquickstackview_p.cpp b/src/templates/qquickstackview_p.cpp
index 1a08d349..ffd9934e 100644
--- a/src/templates/qquickstackview_p.cpp
+++ b/src/templates/qquickstackview_p.cpp
@@ -405,13 +405,13 @@ void QQuickStackViewPrivate::popTransition(QQuickStackElement *enter, QQuickStac
}
if (exit) {
- if (immediate || !exit->prepareTransition(transitioner, viewBounds))
+ if (immediate || !exit->item || !exit->prepareTransition(transitioner, viewBounds))
completeTransition(exit, transitioner->removeTransition);
else
exit->startTransition(transitioner);
}
if (enter) {
- if (immediate || !enter->prepareTransition(transitioner, QRectF()))
+ if (immediate || !enter->item || !enter->prepareTransition(transitioner, QRectF()))
completeTransition(enter, transitioner->removeDisplacedTransition);
else
enter->startTransition(transitioner);
@@ -437,13 +437,13 @@ void QQuickStackViewPrivate::pushTransition(QQuickStackElement *enter, QQuickSta
}
if (enter) {
- if (immediate || !enter->prepareTransition(transitioner, viewBounds))
+ if (immediate || !enter->item || !enter->prepareTransition(transitioner, viewBounds))
completeTransition(enter, transitioner->addTransition);
else
enter->startTransition(transitioner);
}
if (exit) {
- if (immediate || !exit->prepareTransition(transitioner, QRectF()))
+ if (immediate || !exit->item || !exit->prepareTransition(transitioner, QRectF()))
completeTransition(exit, transitioner->addDisplacedTransition);
else
exit->startTransition(transitioner);
@@ -470,13 +470,13 @@ void QQuickStackViewPrivate::replaceTransition(QQuickStackElement *enter, QQuick
}
if (exit) {
- if (immediate || !exit->prepareTransition(transitioner, QRectF()))
+ if (immediate || !exit->item || !exit->prepareTransition(transitioner, QRectF()))
completeTransition(exit, transitioner->moveDisplacedTransition);
else
exit->startTransition(transitioner);
}
if (enter) {
- if (immediate || !enter->prepareTransition(transitioner, viewBounds))
+ if (immediate || !enter->item || !enter->prepareTransition(transitioner, viewBounds))
completeTransition(enter, transitioner->moveTransition);
else
enter->startTransition(transitioner);
diff --git a/tests/auto/controls/data/tst_stackview.qml b/tests/auto/controls/data/tst_stackview.qml
index 23eaf317..1cd12af3 100644
--- a/tests/auto/controls/data/tst_stackview.qml
+++ b/tests/auto/controls/data/tst_stackview.qml
@@ -744,4 +744,17 @@ TestCase {
control.destroy()
}
+
+ function test_failures() {
+ var control = stackView.createObject(testCase, {initialItem: component})
+ verify(control)
+
+ ignoreWarning("QQmlComponent: Component is not ready")
+ control.push("non-existent.qml")
+ ignoreWarning("QQmlComponent: Component is not ready")
+ control.replace("non-existent.qml")
+ control.pop()
+
+ control.destroy()
+ }
}