diff options
author | J-P Nurmi <jpnurmi@qt.io> | 2018-04-12 10:18:06 +0200 |
---|---|---|
committer | J-P Nurmi <jpnurmi@qt.io> | 2018-04-12 09:14:09 +0000 |
commit | ad343ad8ffc1016dd7d2d79603148ab2a07fe713 (patch) | |
tree | 5521c9f7bf0f3cb3852e23505f402234a67c629f /src/quicktemplates2/qquickswipedelegate.cpp | |
parent | 9708f54144f102e4f97334c953a0a890874a6881 (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.cpp | 9 |
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); } |