aboutsummaryrefslogtreecommitdiffstats
path: root/src/quicktemplates2/qquickswipedelegate.cpp
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@qt.io>2018-04-12 10:18:06 +0200
committerJ-P Nurmi <jpnurmi@qt.io>2018-04-12 09:14:09 +0000
commitad343ad8ffc1016dd7d2d79603148ab2a07fe713 (patch)
tree5521c9f7bf0f3cb3852e23505f402234a67c629f /src/quicktemplates2/qquickswipedelegate.cpp
parent9708f54144f102e4f97334c953a0a890874a6881 (diff)
QQuickSwipeDelegate: don't re-position until component complete
This avoids a binding loop with implicitBackgroundWidth. The problem is that reposition() calls QQuickControl::background(), which may force an early execution that triggers a whole bunch of expressions to be re-evaluated. Change-Id: I6d780a3ecb78cfb0581fee859a7ead0eb7ecdc1a Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'src/quicktemplates2/qquickswipedelegate.cpp')
-rw-r--r--src/quicktemplates2/qquickswipedelegate.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/quicktemplates2/qquickswipedelegate.cpp b/src/quicktemplates2/qquickswipedelegate.cpp
index 9df361ee..ed6da9dc 100644
--- a/src/quicktemplates2/qquickswipedelegate.cpp
+++ b/src/quicktemplates2/qquickswipedelegate.cpp
@@ -1217,12 +1217,19 @@ void QQuickSwipeDelegate::touchEvent(QTouchEvent *event)
event->ignore();
}
+void QQuickSwipeDelegate::componentComplete()
+{
+ Q_D(QQuickSwipeDelegate);
+ QQuickItemDelegate::componentComplete();
+ QQuickSwipePrivate::get(&d->swipe)->reposition(DontAnimatePosition);
+}
+
void QQuickSwipeDelegate::geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry)
{
Q_D(QQuickSwipeDelegate);
QQuickControl::geometryChanged(newGeometry, oldGeometry);
- if (!qFuzzyCompare(newGeometry.width(), oldGeometry.width())) {
+ if (isComponentComplete() && !qFuzzyCompare(newGeometry.width(), oldGeometry.width())) {
QQuickSwipePrivate *swipePrivate = QQuickSwipePrivate::get(&d->swipe);
swipePrivate->reposition(DontAnimatePosition);
}