@@ -261,77 +261,83 @@ Item {
261261 listView.gapToEndPhase,
262262 listView.translationXViewFactor)
263263
264− delegate: Loader {
265− property bool explicitlyScaled: explicitScaleFactor == carousel.selectedItemScaleFactor
266− property real explicitScaleFactor: explicitScale ? carousel.selectedItemScaleFactor : 1.0
267− readonly property bool explicitScale: (!listView.moving ||
268− listView.realContentX <= 0 ||
269− listView.realContentX >= listView.realContentWidth - listView.realWidth) &&
270− listView.newContentX === listView.disabledNewContentX &&
271− index === listView.selectedIndex
272− readonly property real cachedTiles: listView.realPathItemCount + carousel.drawBuffer / listView.tileWidth
273− readonly property real distance: listView.continuousIndex - index
274− readonly property real itemTranslationScale: CarouselJS.getItemScale(0.5,
275− (index + 0.5), // good approximation of scale while changing selected item
276− listView.count,
277− listView.visibleTilesScaleFactor)
278− readonly property real itemScale: CarouselJS.getItemScale(distance,
279− listView.continuousIndex,
280− listView.count,
281− listView.visibleTilesScaleFactor)
282− readonly property real translationX: CarouselJS.getItemTranslation(index,
283− listView.selectedIndex,
284− distance,
285− itemScale,
286− itemTranslationScale,
287− listView.maximumItemTranslation)
288−
289− readonly property real xTransform: listView.viewTranslation + translationX * listView.scaleFactor
290− readonly property real center: x - listView.contentX + xTransform - drawBuffer + (width/2)
291−
292− width: listView.tileWidth
293− height: listView.tileHeight
294− scale: itemScale * explicitScaleFactor
295− sourceComponent: itemComponent
296− z: cachedTiles - Math.abs(index - listView.selectedIndex)
297−
298− transform: Translate {
299− x: xTransform
300− }
264+ delegate: tileWidth != 0 && tileHeight != 0 ? loaderComponent : undefined
265+
266+ Component {
267+ id: loaderComponent
268+
269+ Loader {
270+ property bool explicitlyScaled: explicitScaleFactor == carousel.selectedItemScaleFactor
271+ property real explicitScaleFactor: explicitScale ? carousel.selectedItemScaleFactor : 1.0
272+ readonly property bool explicitScale: (!listView.moving ||
273+ listView.realContentX <= 0 ||
274+ listView.realContentX >= listView.realContentWidth - listView.realWidth) &&
275+ listView.newContentX === listView.disabledNewContentX &&
276+ index === listView.selectedIndex
277+ readonly property real cachedTiles: listView.realPathItemCount + carousel.drawBuffer / listView.tileWidth
278+ readonly property real distance: listView.continuousIndex - index
279+ readonly property real itemTranslationScale: CarouselJS.getItemScale(0.5,
280+ (index + 0.5), // good approximation of scale while changing selected item
281+ listView.count,
282+ listView.visibleTilesScaleFactor)
283+ readonly property real itemScale: CarouselJS.getItemScale(distance,
284+ listView.continuousIndex,
285+ listView.count,
286+ listView.visibleTilesScaleFactor)
287+ readonly property real translationX: CarouselJS.getItemTranslation(index,
288+ listView.selectedIndex,
289+ distance,
290+ itemScale,
291+ itemTranslationScale,
292+ listView.maximumItemTranslation)
293+
294+ readonly property real xTransform: listView.viewTranslation + translationX * listView.scaleFactor
295+ readonly property real center: x - listView.contentX + xTransform - drawBuffer + (width/2)
296+
297+ width: listView.tileWidth
298+ height: listView.tileHeight
299+ scale: itemScale * explicitScaleFactor
300+ sourceComponent: itemComponent
301+ z: cachedTiles - Math.abs(index - listView.selectedIndex)
302+
303+ transform: Translate {
304+ x: xTransform
305+ }
301306
302− Behavior on explicitScaleFactor {
303− SequentialAnimation {
304− ScriptAction {
305− script: if (!explicitScale)
306− explicitlyScaled = false
307− }
308− NumberAnimation {
309− duration: explicitScaleFactor === 1.0 ? 250 : 150
310− easing.type: Easing.InOutQuad
311− }
312− ScriptAction {
313− script: if (explicitScale)
314− explicitlyScaled = true
307+ Behavior on explicitScaleFactor {
308+ SequentialAnimation {
309+ ScriptAction {
310+ script: if (!explicitScale)
311+ explicitlyScaled = false
312+ }
313+ NumberAnimation {
314+ duration: explicitScaleFactor === 1.0 ? 250 : 150
315+ easing.type: Easing.InOutQuad
316+ }
317+ ScriptAction {
318+ script: if (explicitScale)
319+ explicitlyScaled = true
320+ }
315321 }
316322 }
317− }
318323
319− onLoaded: {
320− item.explicitlyScaled = Qt.binding(function() { return explicitlyScaled; })
321− item.model = Qt.binding(function() { return model; })
322− }
324+ onLoaded: {
325+ item.explicitlyScaled = Qt.binding(function() { return explicitlyScaled; })
326+ item.model = Qt.binding(function() { return model; })
327+ }
323328
324− MouseArea {
325− id: mouseArea
329+ MouseArea {
330+ id: mouseArea
326331
327− anchors.fill: parent
332+ anchors.fill: parent
328333
329− onClicked: {
330− listView.itemClicked(index, item)
331− }
334+ onClicked: {
335+ listView.itemClicked(index, item)
336+ }
332337
333− onPressAndHold: {
334− listView.itemPressAndHold(index, item)
338+ onPressAndHold: {
339+ listView.itemPressAndHold(index, item)
340+ }
335341 }
336342 }
337343 }