aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@digia.com>2014-05-06 12:22:32 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-05-07 14:46:50 +0200
commit556846aa1fd5594156116c33ebf57b1f58fff53e (patch)
tree96ca09ac395959bccdfcb929c3a993786723fef7 /src
parentac9f1332c2a66203d3039626512773a28fd8dca0 (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.cpp4
-rw-r--r--src/quick/items/qquickitemview.cpp5
-rw-r--r--src/quick/items/qquicklistview.cpp4
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.