From d0b1bef8b889ab852eaf906fdc9cd4219238872e Mon Sep 17 00:00:00 2001 From: Fabio Falsini Date: Thu, 28 Jan 2021 20:46:21 +0100 Subject: QQuickItemParticle give() method kill particle Currently removing an item connected to a particle only invalidate the particle that will be reused for the next item set. This has the effect that the new item inserted appears in the same position as the old one just removed. This patch force killing the particle to assign next item to a new particle starting from initial position. Pick-to: 5.15 6.0 6.1 Change-Id: Ic937a6d7aea65368cceb1405bb81ef1502d988a5 Reviewed-by: Ulf Hermann --- tests/auto/particles/qquickitemparticle/data/takeGive.qml | 3 ++- tests/auto/particles/qquickitemparticle/tst_qquickitemparticle.cpp | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) (limited to 'tests') diff --git a/tests/auto/particles/qquickitemparticle/data/takeGive.qml b/tests/auto/particles/qquickitemparticle/data/takeGive.qml index e95ae738bd..926d83bfc1 100644 --- a/tests/auto/particles/qquickitemparticle/data/takeGive.qml +++ b/tests/auto/particles/qquickitemparticle/data/takeGive.qml @@ -65,9 +65,10 @@ Rectangle { } Emitter{ + objectName: "emitter" //0,0 position size: 32 - emitRate: 1000 + emitRate: 0 lifeSpan: Emitter.InfiniteLife } } diff --git a/tests/auto/particles/qquickitemparticle/tst_qquickitemparticle.cpp b/tests/auto/particles/qquickitemparticle/tst_qquickitemparticle.cpp index 28ebbb3c05..538c429d1a 100644 --- a/tests/auto/particles/qquickitemparticle/tst_qquickitemparticle.cpp +++ b/tests/auto/particles/qquickitemparticle/tst_qquickitemparticle.cpp @@ -29,6 +29,7 @@ #include #include "../shared/particlestestsshared.h" #include +#include #include #include @@ -114,11 +115,14 @@ void tst_qquickitemparticle::test_takeGive() { QQuickView* view = createView(testFileUrl("takeGive.qml"), 500); QQuickParticleSystem* system = view->rootObject()->findChild("system"); + QQuickParticleEmitter* emitter = view->rootObject()->findChild("emitter"); QMetaObject::invokeMethod(view->rootObject(), "takeItems"); + emitter->burst(100); ensureAnimTime(1000, system->m_animation); QVERIFY(system->property("acc").toInt() == 100); QMetaObject::invokeMethod(view->rootObject(), "giveItems"); QTRY_VERIFY(system->property("acc").toInt() == 0); + QTRY_VERIFY(system->isEmpty() == true); delete view; } -- cgit v1.2.3