diff --git a/TileView.qml b/TileView.qml index 27eae29719bd965564e1c51f357a23e05d307341..767752b9a473a676c681d43f69aa82be167ec9f0 100644 --- a/TileView.qml +++ b/TileView.qml @@ -12,15 +12,13 @@ Control { property real handleWidth: 5 property real handleHeight: 5 - property var _majorPositions: { - let positions = []; - for (let i = 0; i < majorCount; ++i) { - positions.push(i / majorCount); - } - return positions; - } - property var _minorPositions: { - let count = Math.max(...minorCounts); + property var _majorPositions: _makeDefaultPositionsArray(majorCount) + property var _minorPositions: _makeDefaultPositionsArray(Math.max(...minorCounts)) + + property alias model: contentRepeater.model + property Component delegate + + function _makeDefaultPositionsArray(count) { let positions = []; for (let i = 0; i < count; ++i) { positions.push(i / count); @@ -28,8 +26,19 @@ Control { return positions; } - property alias model: contentRepeater.model - property Component delegate + Component.onCompleted: { + // break binding + _majorPositions = _majorPositions; + _minorPositions = _minorPositions; + } + + onMajorCountChanged: { + _majorPositions = _makeDefaultPositionsArray(majorCount); + } + + onMinorCountsChanged: { + _minorPositions = _makeDefaultPositionsArray(Math.max(...minorCounts)); + } contentItem: Item { Item {