Insertions were calculating wrong insertion pos
authorBea Lam <bea.lam@nokia.com>
Fri, 13 Jan 2012 04:35:04 +0000 (14:35 +1000)
committerQt by Nokia <qt-info@nokia.com>
Tue, 17 Jan 2012 23:16:46 +0000 (00:16 +0100)
commit52c1d7a994216f0b37ac04a2fea4337bc0c7550b
treed5301c513511a2595ece9ce533a3eb78d507c2a7
parent6a5b9cb96434b5e36646fdbe66b23d0c6a1bdcd1
Insertions were calculating wrong insertion pos

After removes, and after each insertion, the view must adjust the
visibleItems.first() position and call layoutVisibleItems() to ensure
that the correct insertion position is calculated for insertions that
follow.

When applyInsertionChange() in GridView and ListView calculates the
position for item insertion, it looks at the current positions of the
items in visibleItems, so these positions must be updated prior to
this calculation. Otherwise, insertions that follow a remove may not
calculate this position correctly and will neglect to add some items,
and multiple insertions may unnecessarily create items at positions that
are not actually visible.

resetFirstItemPosition() is changed to take a set position and it
replaces resetItemPosition() since it can do the same thing.

Task-number: QTBUG-23610 QTBUG-23609

Change-Id: I8839ee7d15853301435e80c0dc563f93fc3605cf
Reviewed-by: Martin Jones <martin.jones@nokia.com>
src/quick/items/qquickgridview.cpp
src/quick/items/qquickitemview.cpp
src/quick/items/qquickitemview_p_p.h
src/quick/items/qquicklistview.cpp
tests/auto/qtquick2/qquickgridview/tst_qquickgridview.cpp
tests/auto/qtquick2/qquicklistview/tst_qquicklistview.cpp