@@ -41,6 +41,7 @@ FocusScope {
41 property bool visibleToParent: false
41 property bool visibleToParent: false
42 property alias pageHeaderTotallyVisible: categoryView.pageHeaderTotallyVisible
42 property alias pageHeaderTotallyVisible: categoryView.pageHeaderTotallyVisible
43 property var holdingList: null
43 property var holdingList: null
44+ property bool wasCurrentOnMoveStart: false
45 property var scopeStyle: ScopeStyle {
46 property var scopeStyle: ScopeStyle {
46 style: scope ? scope.customizations : {}
47 style: scope ? scope.customizations : {}
@@ -116,6 +117,9 @@ FocusScope {
118 onIsCurrentChanged: {
119 onIsCurrentChanged: {
120+ if (!holdingList || !holdingList.moving) {
121+ wasCurrentOnMoveStart = scopeView.isCurrent;
119 if (pageHeaderLoader.item && showPageHeader) {
123 if (pageHeaderLoader.item && showPageHeader) {
120 pageHeaderLoader.item.resetSearch();
124 pageHeaderLoader.item.resetSearch();
@@ -142,6 +146,15 @@ FocusScope {
142 onHideDash: subPageLoader.closeSubPage()
146 onHideDash: subPageLoader.closeSubPage()
153+ wasCurrentOnMoveStart = scopeView.isCurrent;
145 Rectangle {
158 Rectangle {
146 anchors.fill: parent
159 anchors.fill: parent
147 color: scopeView.scopeStyle ? scopeView.scopeStyle.background : "transparent"
160 color: scopeView.scopeStyle ? scopeView.scopeStyle.background : "transparent"
@@ -367,7 +380,11 @@ FocusScope {
368 function updateRanges() {
381 function updateRanges() {
369 // Don't want to create stress by requesting more items during scope
382 // Don't want to create stress by requesting more items during scope
370− // changes so unless you're not part of the visible scopes just return
383+ // changes so unless you're not part of the visible scopes just return.
384+ // For the visible scopes we need to do some work, the previously non visible
385+ // scope needs to adjust its ranges so that we define the new visible range,
386+ // that still means no creation/destruction of delegates, it's just about changing
387+ // the culling of the items so they are actually visible
371 if (holdingList && holdingList.moving && !scopeView.visibleToParent) {
388 if (holdingList && holdingList.moving && !scopeView.visibleToParent) {
@@ -412,7 +429,18 @@ FocusScope {
412 if (scopeView.isCurrent || scopeView.visibleToParent) {
429 if (scopeView.isCurrent || scopeView.visibleToParent) {
413 item.displayMarginBeginning = displayMarginBeginning;
430 item.displayMarginBeginning = displayMarginBeginning;
414 item.displayMarginEnd = displayMarginEnd;
431 item.displayMarginEnd = displayMarginEnd;
432+ if (holdingList && holdingList.moving) {
433+ // If we are moving we need to reset the cache buffer of the
434+ // view that was not visible (i.e. !wasCurrentOnMoveStart) to 0 since
435+ // otherwise the cache buffer we had set to preload the items of the
436+ // visible range will trigger some item creations and we want move to
437+ // be as smooth as possible meaning no need creations
438+ if (!wasCurrentOnMoveStart) {
439+ item.cacheBuffer = 0;
415− item.cacheBuffer = scopeView.isCurrent ? categoryView.height * 1.5 : 0;
442+ item.cacheBuffer = categoryView.height * 1.5;
417 var visibleRange = baseItem.height + displayMarginEnd + displayMarginBeginning;
445 var visibleRange = baseItem.height + displayMarginEnd + displayMarginBeginning;
418 if (visibleRange < 0) {
446 if (visibleRange < 0) {