aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@theqtcompany.com>2015-08-26 17:53:41 +0200
committerJ-P Nurmi <jpnurmi@theqtcompany.com>2015-08-27 14:04:11 +0000
commit4a6292afc8609c2b51a53ba52ff14adcfc0833fa (patch)
tree28d24918710c6dad92d369be1c9a8179a16b9303
parent162ae5c4a7ffa45f63911801a094fe049750cdc3 (diff)
StackView: fix transitions
Passing null view bounds for the transitionable exit item helps to kick off the transition as appropriate. Otherwise the view transition item determines in QQuickItemViewTransitionableItem::prepareTransition() that no transition is necessary. Change-Id: Icb664725c4393ef3bb894b71a5912652f82c9da0 Task-number: QTBUG-47949 Reviewed-by: Mitch Curtis <mitch.curtis@theqtcompany.com>
-rw-r--r--src/controls/qquickstackview_p.cpp6
-rw-r--r--tests/auto/controls/data/tst_stackview.qml47
2 files changed, 50 insertions, 3 deletions
diff --git a/src/controls/qquickstackview_p.cpp b/src/controls/qquickstackview_p.cpp
index 6568d344..c0969199 100644
--- a/src/controls/qquickstackview_p.cpp
+++ b/src/controls/qquickstackview_p.cpp
@@ -403,7 +403,7 @@ void QQuickStackViewPrivate::popTransition(QQuickStackElement *enter, QQuickStac
exit->startTransition(transitioner);
}
if (enter) {
- if (immediate || !enter->prepareTransition(transitioner, viewBounds))
+ if (immediate || !enter->prepareTransition(transitioner, QRectF()))
completeTransition(enter, transitioner->removeDisplacedTransition);
else
enter->startTransition(transitioner);
@@ -434,7 +434,7 @@ void QQuickStackViewPrivate::pushTransition(QQuickStackElement *enter, QQuickSta
enter->startTransition(transitioner);
}
if (exit) {
- if (immediate || !exit->prepareTransition(transitioner, viewBounds))
+ if (immediate || !exit->prepareTransition(transitioner, QRectF()))
completeTransition(exit, transitioner->addDisplacedTransition);
else
exit->startTransition(transitioner);
@@ -466,7 +466,7 @@ void QQuickStackViewPrivate::replaceTransition(QQuickStackElement *enter, QQuick
enter->startTransition(transitioner);
}
if (exit) {
- if (immediate || !exit->prepareTransition(transitioner, viewBounds))
+ if (immediate || !exit->prepareTransition(transitioner, QRectF()))
completeTransition(exit, transitioner->addDisplacedTransition);
else
exit->startTransition(transitioner);
diff --git a/tests/auto/controls/data/tst_stackview.qml b/tests/auto/controls/data/tst_stackview.qml
index 3c54e60b..3a26b423 100644
--- a/tests/auto/controls/data/tst_stackview.qml
+++ b/tests/auto/controls/data/tst_stackview.qml
@@ -428,4 +428,51 @@ TestCase {
control.destroy()
}
+
+ Component {
+ id: transitionView
+ StackView {
+ property int popEnterRuns
+ property int popExitRuns
+ property int pushEnterRuns
+ property int pushExitRuns
+ popEnter: Transition {
+ PauseAnimation { duration: 1 }
+ onRunningChanged: if (!running) ++popEnterRuns
+ }
+ popExit: Transition {
+ PauseAnimation { duration: 1 }
+ onRunningChanged: if (!running) ++popExitRuns
+ }
+ pushEnter: Transition {
+ PauseAnimation { duration: 1 }
+ onRunningChanged: if (!running) ++pushEnterRuns
+ }
+ pushExit: Transition {
+ PauseAnimation { duration: 1 }
+ onRunningChanged: if (!running) ++pushExitRuns
+ }
+ }
+ }
+
+ function test_transitions() {
+ var control = transitionView.createObject(testCase)
+
+ control.push(component)
+ verify(!control.busy)
+ compare(control.pushEnterRuns, 0)
+ compare(control.pushExitRuns, 0)
+
+ control.push(component)
+ tryCompare(control, "busy", false)
+ compare(control.pushEnterRuns, 1)
+ compare(control.pushExitRuns, 1)
+
+ control.pop()
+ tryCompare(control, "busy", false)
+ compare(control.popEnterRuns, 1)
+ compare(control.popExitRuns, 1)
+
+ control.destroy()
+ }
}