aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick
diff options
context:
space:
mode:
Diffstat (limited to 'src/quick')
-rw-r--r--src/quick/items/qquickgridview.cpp8
-rw-r--r--src/quick/items/qquickitemview.cpp4
-rw-r--r--src/quick/items/qquickitemview_p_p.h2
-rw-r--r--src/quick/items/qquickitemviewtransition.cpp13
-rw-r--r--src/quick/items/qquickitemviewtransition_p.h2
-rw-r--r--src/quick/items/qquicklistview.cpp8
6 files changed, 21 insertions, 16 deletions
diff --git a/src/quick/items/qquickgridview.cpp b/src/quick/items/qquickgridview.cpp
index 7c4f95faed..78899b27e5 100644
--- a/src/quick/items/qquickgridview.cpp
+++ b/src/quick/items/qquickgridview.cpp
@@ -120,8 +120,8 @@ public:
return itemX() + view->cellWidth();
}
}
- void setPosition(qreal col, qreal row) {
- moveTo(pointForPosition(col, row));
+ void setPosition(qreal col, qreal row, bool immediate = false) {
+ moveTo(pointForPosition(col, row), immediate);
}
bool contains(qreal x, qreal y) const {
return (x >= itemX() && x < itemX() + view->cellWidth() &&
@@ -483,7 +483,7 @@ bool QQuickGridViewPrivate::addVisibleItems(qreal fillFrom, qreal fillTo, bool d
if (!(item = static_cast<FxGridItemSG*>(createItem(modelIndex, doBuffer))))
break;
if (!transitioner || !transitioner->canTransition(QQuickItemViewTransitioner::PopulateTransition, true)) // pos will be set by layoutVisibleItems()
- item->setPosition(colPos, rowPos);
+ item->setPosition(colPos, rowPos, true);
item->item->setVisible(!doBuffer);
visibleItems.append(item);
if (++colNum >= columns) {
@@ -521,7 +521,7 @@ bool QQuickGridViewPrivate::addVisibleItems(qreal fillFrom, qreal fillTo, bool d
break;
--visibleIndex;
if (!transitioner || !transitioner->canTransition(QQuickItemViewTransitioner::PopulateTransition, true)) // pos will be set by layoutVisibleItems()
- item->setPosition(colPos, rowPos);
+ item->setPosition(colPos, rowPos, true);
item->item->setVisible(!doBuffer);
visibleItems.prepend(item);
if (--colNum < 0) {
diff --git a/src/quick/items/qquickitemview.cpp b/src/quick/items/qquickitemview.cpp
index aafddb40c8..c6f45aaf0b 100644
--- a/src/quick/items/qquickitemview.cpp
+++ b/src/quick/items/qquickitemview.cpp
@@ -73,10 +73,10 @@ qreal FxViewItem::itemY() const
return transitionableItem ? transitionableItem->itemY() : item->y();
}
-void FxViewItem::moveTo(const QPointF &pos)
+void FxViewItem::moveTo(const QPointF &pos, bool immediate)
{
if (transitionableItem)
- transitionableItem->moveTo(pos);
+ transitionableItem->moveTo(pos, immediate);
else
item->setPos(pos);
}
diff --git a/src/quick/items/qquickitemview_p_p.h b/src/quick/items/qquickitemview_p_p.h
index 216f10aa23..dfc0a8bc7e 100644
--- a/src/quick/items/qquickitemview_p_p.h
+++ b/src/quick/items/qquickitemview_p_p.h
@@ -66,7 +66,7 @@ public:
qreal itemX() const;
qreal itemY() const;
- void moveTo(const QPointF &pos);
+ void moveTo(const QPointF &pos, bool immediate);
void setVisible(bool visible);
QQuickItemViewTransitioner::TransitionType scheduledTransitionType() const;
diff --git a/src/quick/items/qquickitemviewtransition.cpp b/src/quick/items/qquickitemviewtransition.cpp
index 7e804ae5bf..d9dce49349 100644
--- a/src/quick/items/qquickitemviewtransition.cpp
+++ b/src/quick/items/qquickitemviewtransition.cpp
@@ -365,13 +365,18 @@ qreal QQuickItemViewTransitionableItem::itemY() const
return item->y();
}
-void QQuickItemViewTransitionableItem::moveTo(const QPointF &pos)
+void QQuickItemViewTransitionableItem::moveTo(const QPointF &pos, bool immediate)
{
- if (transitionScheduledOrRunning()) {
+ if (immediate || !transitionScheduledOrRunning()) {
+ if (immediate) {
+ if (transition)
+ transition->cancel();
+ resetTransitionData();
+ }
+ item->setPos(pos);
+ } else {
nextTransitionTo = pos;
nextTransitionToSet = true;
- } else {
- item->setPos(pos);
}
}
diff --git a/src/quick/items/qquickitemviewtransition_p.h b/src/quick/items/qquickitemviewtransition_p.h
index d50b056593..a4babdca05 100644
--- a/src/quick/items/qquickitemviewtransition_p.h
+++ b/src/quick/items/qquickitemviewtransition_p.h
@@ -132,7 +132,7 @@ public:
qreal itemX() const;
qreal itemY() const;
- void moveTo(const QPointF &pos);
+ void moveTo(const QPointF &pos, bool immediate = false);
bool transitionScheduledOrRunning() const;
bool transitionRunning() const;
diff --git a/src/quick/items/qquicklistview.cpp b/src/quick/items/qquicklistview.cpp
index 0b9d1c2f7e..9db2060d89 100644
--- a/src/quick/items/qquicklistview.cpp
+++ b/src/quick/items/qquicklistview.cpp
@@ -292,7 +292,7 @@ public:
: itemX() + item->width());
}
}
- void setPosition(qreal pos) {
+ void setPosition(qreal pos, bool immediate = false) {
// position the section immediately even if there is a transition
if (section()) {
if (view->orientation() == QQuickListView::Vertical) {
@@ -304,7 +304,7 @@ public:
section()->setX(pos);
}
}
- moveTo(pointForPosition(pos));
+ moveTo(pointForPosition(pos), immediate);
}
void setSize(qreal size) {
if (view->orientation() == QQuickListView::Vertical)
@@ -638,7 +638,7 @@ bool QQuickListViewPrivate::addVisibleItems(qreal fillFrom, qreal fillTo, bool d
if (!(item = static_cast<FxListItemSG*>(createItem(modelIndex, doBuffer))))
break;
if (!transitioner || !transitioner->canTransition(QQuickItemViewTransitioner::PopulateTransition, true)) // pos will be set by layoutVisibleItems()
- item->setPosition(pos);
+ item->setPosition(pos, true);
item->item->setVisible(!doBuffer);
pos += item->size() + spacing;
visibleItems.append(item);
@@ -658,7 +658,7 @@ bool QQuickListViewPrivate::addVisibleItems(qreal fillFrom, qreal fillTo, bool d
--visibleIndex;
visiblePos -= item->size() + spacing;
if (!transitioner || !transitioner->canTransition(QQuickItemViewTransitioner::PopulateTransition, true)) // pos will be set by layoutVisibleItems()
- item->setPosition(visiblePos);
+ item->setPosition(visiblePos, true);
item->item->setVisible(!doBuffer);
visibleItems.prepend(item);
changed = true;