import QtQuick 2.0 Rectangle { id: root width: 500 height: 600 property int duration: 10 property int count: grid.count Component { id: myDelegate Rectangle { id: wrapper property string nameData: name objectName: "wrapper" width: 80 height: 60 border.width: 1 Column { Text { text: index } Text { text: wrapper.x + ", " + wrapper.y } Text { id: textName objectName: "textName" text: name } } color: GridView.isCurrentItem ? "lightsteelblue" : "white" } } GridView { id: grid property var displaceTransitionsStarted: new Object() property bool displaceTransitionsDone: false objectName: "grid" focus: true anchors.centerIn: parent width: 240 height: 320 cacheBuffer: 0 cellWidth: 80 cellHeight: 60 model: testModel delegate: myDelegate displaced: Transition { id: transition SequentialAnimation { ScriptAction { script: { var name = transition.ViewTransition.item.nameData if (grid.displaceTransitionsStarted[name] == undefined) grid.displaceTransitionsStarted[name] = 0 grid.displaceTransitionsStarted[name] += 1 } } NumberAnimation { properties: "x,y" duration: root.duration easing.type: Easing.OutBounce easing.amplitude: 10.0 // longer-lasting bounce to trigger bug } PropertyAction { target: grid; property: "displaceTransitionsDone"; value: true } } } } Rectangle { anchors.fill: grid color: "lightsteelblue" opacity: 0.2 } }