aboutsummaryrefslogtreecommitdiffstats
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
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>
-rw-r--r--src/quicktemplates2/qquickswipedelegate.cpp9
-rw-r--r--src/quicktemplates2/qquickswipedelegate_p.h1
2 files changed, 9 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);
}
diff --git a/src/quicktemplates2/qquickswipedelegate_p.h b/src/quicktemplates2/qquickswipedelegate_p.h
index ad840097..53211ccb 100644
--- a/src/quicktemplates2/qquickswipedelegate_p.h
+++ b/src/quicktemplates2/qquickswipedelegate_p.h
@@ -79,6 +79,7 @@ protected:
void mouseReleaseEvent(QMouseEvent *event) override;
void touchEvent(QTouchEvent *event) override;
+ void componentComplete() override;
void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) override;
QFont defaultFont() const override;