on xenial help sign in
Sent the visible range so that even if we set a huge displayMargin for current view, the views are only created, not marked as visible
commitb5ed3a41bf8f30d453a09f6079a87c8189d6ec6e authorAlbert Astals <albert.astals@canonical.com> dateTue 26 Aug 2014, 15:05 (12 years ago) parent4e5585e
4 files changed+20−9
qml/Dash/CardGrid.qml+1 qml/Dash/CardVerticalJournal.qml+1 qml/Dash/DashRenderer.qml+4 qml/Dash/GenericScopeView.qml+14−9
qml/Dash/CardGrid.qml+1
@@ -55,6 +55,7 @@ DashRenderer {
5555 delegate: Item {
5656 width: grid.cellWidth
5757 height: grid.cellHeight
58+ visible: y + height >= root.visibleRangeBegin && y <= root.visibleRangeEnd
5859 Loader {
5960 id: loader
6061 sourceComponent: cardTool.cardComponent
qml/Dash/CardVerticalJournal.qml+1
@@ -49,6 +49,7 @@ DashRenderer {
4949 id: loader
5050 sourceComponent: cardTool.cardComponent
5151 width: cardTool.cardWidth
52+ visible: y + height >= root.visibleRangeBegin && y <= root.visibleRangeEnd
5253 onLoaded: {
5354 item.objectName = "delegate" + index;
5455 item.fixedArtShapeSize = Qt.binding(function() { return cardTool.artShapeSize; });
qml/Dash/DashRenderer.qml+4
@@ -27,6 +27,10 @@ Item {
2727
2828 property int displayMarginEnd: 0
2929
30+ property int visibleRangeBegin: 0
31+
32+ property int visibleRangeEnd: 0
33+
3034 property real originY: 0
3135
3236 // The model to renderer
qml/Dash/GenericScopeView.qml+14−9
@@ -196,8 +196,8 @@ FocusScope {
196196 }
197197 }
198198
199− onHeightChanged: rendererLoader.updateDelegateCreationRange();
200− onYChanged: rendererLoader.updateDelegateCreationRange();
199+ onHeightChanged: rendererLoader.updateRanges();
200+ onYChanged: rendererLoader.updateRanges();
201201
202202 Loader {
203203 id: rendererLoader
@@ -245,7 +245,7 @@ FocusScope {
245245 var shouldExpand = categoryId === categoryView.expandedCategoryId;
246246 baseItem.expand(shouldExpand, false /*animate*/);
247247 }
248− updateDelegateCreationRange();
248+ updateRanges();
249249 if (scope && scope.id === "clickscope" && (categoryId === "predefined" || categoryId === "local")) {
250250 // Yeah, hackish :/
251251 cardTool.artShapeSize = Qt.size(units.gu(8), units.gu(7.5));
@@ -300,17 +300,17 @@ FocusScope {
300300 }
301301 }
302302 }
303− onOriginYChanged: rendererLoader.updateDelegateCreationRange();
304− onContentYChanged: rendererLoader.updateDelegateCreationRange();
305− onHeightChanged: rendererLoader.updateDelegateCreationRange();
306− onContentHeightChanged: rendererLoader.updateDelegateCreationRange();
303+ onOriginYChanged: rendererLoader.updateRanges();
304+ onContentYChanged: rendererLoader.updateRanges();
305+ onHeightChanged: rendererLoader.updateRanges();
306+ onContentHeightChanged: rendererLoader.updateRanges();
307307 }
308308 Connections {
309309 target: scopeView
310− onIsCurrentChanged: rendererLoader.updateDelegateCreationRange();
310+ onIsCurrentChanged: rendererLoader.updateRanges();
311311 }
312312
313− function updateDelegateCreationRange() {
313+ function updateRanges() {
314314 if (categoryView.moving) {
315315 // Do not update the range if we are overshooting up or down, since we'll come back
316316 // to the stable position and delete/create items without any reason
@@ -322,6 +322,11 @@ FocusScope {
322322 }
323323 }
324324
325+ if (item && item.hasOwnProperty("visibleRangeBegin")) {
326+ item.visibleRangeBegin = Math.max(-baseItem.y, 0)
327+ item.visibleRangeEnd = item.visibleRangeBegin + Math.min(categoryView.height, rendererLoader.height)
328+ }
329+
325330 if (item && item.hasOwnProperty("displayMarginBeginning")) {
326331 // TODO do we need item.originY here, test 1300302 once we have a silo
327332 // and we can run it on the phone