on xenial help sign in
Allow setting the cacheBuffer externally
commit358e8f633176df2ba3b902394e3889d17cb6d2d5 authorAlbert Astals <albert.astals@canonical.com> dateFri 7 Nov 2014, 17:06 (12 years ago) parent9319a17
3 files changed+30−5
plugins/Dash/abstractdashview.cpp+24−3 plugins/Dash/abstractdashview.h+6 qml/Dash/GenericScopeView.qml−2
plugins/Dash/abstractdashview.cpp+24−3
@@ -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);
plugins/Dash/abstractdashview.h+6
@@ -35,6 +35,7 @@ class AbstractDashView : public QQuickItem
3535 Q_PROPERTY(QQmlComponent *delegate READ delegate WRITE setDelegate NOTIFY delegateChanged)
3636 Q_PROPERTY(qreal columnSpacing READ columnSpacing WRITE setColumnSpacing NOTIFY columnSpacingChanged)
3737 Q_PROPERTY(qreal rowSpacing READ rowSpacing WRITE setRowSpacing NOTIFY rowSpacingChanged)
38+ Q_PROPERTY(int cacheBuffer READ cacheBuffer WRITE setCacheBuffer NOTIFY cacheBufferChanged)
3839 Q_PROPERTY(qreal displayMarginBeginning READ displayMarginBeginning
3940 WRITE setDisplayMarginBeginning
4041 NOTIFY displayMarginBeginningChanged)
@@ -61,6 +62,9 @@ public:
6162 qreal rowSpacing() const;
6263 void setRowSpacing(qreal rowSpacing);
6364
65+ qreal cacheBuffer() const;
66+ void setCacheBuffer(qreal);
67+
6468 qreal displayMarginBeginning() const;
6569 void setDisplayMarginBeginning(qreal);
6670
@@ -72,6 +76,7 @@ Q_SIGNALS:
7276 void delegateChanged();
7377 void columnSpacingChanged();
7478 void rowSpacingChanged();
79+ void cacheBufferChanged();
7580 void displayMarginBeginningChanged();
7681 void displayMarginEndChanged();
7782
@@ -113,6 +118,7 @@ private:
113118
114119 int m_columnSpacing;
115120 int m_rowSpacing;
121+ qreal m_buffer;
116122 qreal m_displayMarginBeginning;
117123 qreal m_displayMarginEnd;
118124 bool m_needsRelayout;
qml/Dash/GenericScopeView.qml−2
@@ -395,8 +395,6 @@ FocusScope {
395395 // make sure the items in the viewport are created with the cache buffer feature
396396 // - For visible scopes we should always the have a visible range be exactly the
397397 // viewport and make sure the rest of items are created with the cache buffer feature
398− // To be able to implement that feature VerticalJournal/AbstractDashView needs to
399− // make the cache buffer value setable externally
400398 var extraMargins = scopeView.isCurrent ? categoryView.height * 1.5 : 0;
401399
402400 item.displayMarginBeginning = Math.round(-Math.max(-baseItem.y - extraMargins, 0));