@@ -23,6 +23,7 @@ AbstractDashView::AbstractDashView()
2323 , m_asyncRequestedIndex(-1)
2424 , m_columnSpacing(0)
2525 , m_rowSpacing(0)
26+ , m_buffer(320) // Same value used in qquickitemview.cpp in Qt 5.4
2627 , m_displayMarginBeginning(0)
2728 , m_displayMarginEnd(0)
2829 , m_needsRelayout(false)
@@ -112,6 +113,27 @@ void AbstractDashView::setRowSpacing(qreal rowSpacing)
112113 }
113114}
114115
116+qreal AbstractDashView::cacheBuffer() const
117+{
118+ return m_buffer;
119+}
120+
121+void AbstractDashView::setCacheBuffer(qreal buffer)
122+{
123+ if (buffer < 0) {
124+ qmlInfo(this) << "Cannot set a negative cache buffer";
125+ return;
126+ }
127+
128+ if (m_buffer != buffer) {
129+ m_buffer = buffer;
130+ if (isComponentComplete()) {
131+ relayout();
132+ }
133+ emit cacheBufferChanged();
134+ }
135+}
136+
115137qreal AbstractDashView::displayMarginBeginning() const
116138{
117139 return m_displayMarginBeginning;
@@ -160,9 +182,8 @@ void AbstractDashView::refill()
160182
161183 const qreal from = -m_displayMarginBeginning;
162184 const qreal to = height() + m_displayMarginEnd;
163− const qreal buffer = (to - from) * bufferRatio;
164− const qreal bufferFrom = from - buffer;
165− const qreal bufferTo = to + buffer;
185+ const qreal bufferFrom = from - m_buffer;
186+ const qreal bufferTo = to + m_buffer;
166187
167188 bool added = addVisibleItems(from, to, false);
168189 bool removed = removeNonVisibleItems(bufferFrom, bufferTo);