diff options
author | J-P Nurmi <jpnurmi@digia.com> | 2014-05-06 12:22:32 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-05-07 14:46:50 +0200 |
commit | 556846aa1fd5594156116c33ebf57b1f58fff53e (patch) | |
tree | 96ca09ac395959bccdfcb929c3a993786723fef7 /src | |
parent | ac9f1332c2a66203d3039626512773a28fd8dca0 (diff) |
Item views: prevent negative cache buffer
A negative cache buffer does not make much sense, and the item views
would go crazy and start creating/destructing delegates endlessly.
Task-number: QTBUG-38725
Change-Id: I1fbba1f3130a99af67fbc4c2aba4d3199d0554a9
Reviewed-by: Liang Qi <liang.qi@digia.com>
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
Diffstat (limited to 'src')
-rw-r--r-- | src/quick/items/qquickgridview.cpp | 4 | ||||
-rw-r--r-- | src/quick/items/qquickitemview.cpp | 5 | ||||
-rw-r--r-- | src/quick/items/qquicklistview.cpp | 4 |
3 files changed, 9 insertions, 4 deletions
diff --git a/src/quick/items/qquickgridview.cpp b/src/quick/items/qquickgridview.cpp index 82658c73fc..2c03903f36 100644 --- a/src/quick/items/qquickgridview.cpp +++ b/src/quick/items/qquickgridview.cpp @@ -1524,7 +1524,7 @@ void QQuickGridView::setHighlightFollowsCurrentItem(bool autoHighlight) This property determines whether delegates are retained outside the visible area of the view. - If non-zero the view may keep as many delegates + If this value is greater than zero, the view may keep as many delegates instantiated as will fit within the buffer specified. For example, if in a vertical view the delegate is 20 pixels high, there are 3 columns and \c cacheBuffer is @@ -1535,7 +1535,7 @@ void QQuickGridView::setHighlightFollowsCurrentItem(bool autoHighlight) delegates outside the visible area are not painted. The default value of this property is platform dependent, but will usually - be a non-zero value. + be a value greater than zero. Negative values are ignored. Note that cacheBuffer is not a pixel buffer - it only maintains additional instantiated delegates. diff --git a/src/quick/items/qquickitemview.cpp b/src/quick/items/qquickitemview.cpp index b4f6c34c6a..87e6728f86 100644 --- a/src/quick/items/qquickitemview.cpp +++ b/src/quick/items/qquickitemview.cpp @@ -454,6 +454,11 @@ int QQuickItemView::cacheBuffer() const void QQuickItemView::setCacheBuffer(int b) { Q_D(QQuickItemView); + if (b < 0) { + qmlInfo(this) << "Cannot set a negative cache buffer"; + return; + } + if (d->buffer != b) { d->buffer = b; if (isComponentComplete()) { diff --git a/src/quick/items/qquicklistview.cpp b/src/quick/items/qquicklistview.cpp index 8f9dbb567f..ba4f1c53ba 100644 --- a/src/quick/items/qquicklistview.cpp +++ b/src/quick/items/qquicklistview.cpp @@ -2138,7 +2138,7 @@ void QQuickListView::setOrientation(QQuickListView::Orientation orientation) This property determines whether delegates are retained outside the visible area of the view. - If this value is non-zero, the view may keep as many delegates + If this value is greater than zero, the view may keep as many delegates instantiated as it can fit within the buffer specified. For example, if in a vertical view the delegate is 20 pixels high and \c cacheBuffer is set to 40, then up to 2 delegates above and 2 delegates below the visible @@ -2148,7 +2148,7 @@ void QQuickListView::setOrientation(QQuickListView::Orientation orientation) delegates outside the visible area are not painted. The default value of this property is platform dependent, but will usually - be a non-zero value. + be a value greater than zero. Negative values are ignored. Note that cacheBuffer is not a pixel buffer - it only maintains additional instantiated delegates. |