From 25f68921a3c8071f5f1821bf8c08820a7f1bc586 Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Sun, 14 Jun 2015 20:07:42 +0200 Subject: Pass new & old padding to QQuickControl::paddingChange() Consistent with geometryChange() and useful for controls that want to resize delegate items in a specific dimension (ie. either the width or height follows the delegate size). Change-Id: Id143b2ef1e7b266ac32d9f3129f88d0fadb036d0 Reviewed-by: J-P Nurmi --- src/controls/qquickcontainer.cpp | 4 ++-- src/controls/qquickcontainer_p.h | 2 +- src/controls/qquickcontrol.cpp | 32 ++++++++++++++++++++------------ src/controls/qquickcontrol_p.h | 3 +-- 4 files changed, 24 insertions(+), 17 deletions(-) (limited to 'src/controls') diff --git a/src/controls/qquickcontainer.cpp b/src/controls/qquickcontainer.cpp index 4c31e12e..732f3feb 100644 --- a/src/controls/qquickcontainer.cpp +++ b/src/controls/qquickcontainer.cpp @@ -143,10 +143,10 @@ void QQuickContainer::geometryChanged(const QRectF &newGeometry, const QRectF &o d->resizeContent(); } -void QQuickContainer::paddingChange() +void QQuickContainer::paddingChange(const QMarginsF &newPadding, const QMarginsF &oldPadding) { Q_D(QQuickContainer); - QQuickControl::paddingChange(); + QQuickControl::paddingChange(newPadding, oldPadding); d->resizeContent(); } diff --git a/src/controls/qquickcontainer_p.h b/src/controls/qquickcontainer_p.h index 783f79fa..f42e4cee 100644 --- a/src/controls/qquickcontainer_p.h +++ b/src/controls/qquickcontainer_p.h @@ -82,7 +82,7 @@ protected: QQuickContainer(QQuickContainerPrivate &dd, QQuickItem *parent); void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) Q_DECL_OVERRIDE; - void paddingChange() Q_DECL_OVERRIDE; + void paddingChange(const QMarginsF &newPadding, const QMarginsF &oldPadding) Q_DECL_OVERRIDE; virtual void contentItemChange(QQuickItem *newItem, QQuickItem *oldItem); diff --git a/src/controls/qquickcontrol.cpp b/src/controls/qquickcontrol.cpp index 8b80d436..cedfad29 100644 --- a/src/controls/qquickcontrol.cpp +++ b/src/controls/qquickcontrol.cpp @@ -71,7 +71,8 @@ void QQuickControlPrivate::setTopPadding(qreal value, bool reset) if ((!reset && !qFuzzyCompare(oldPadding, value)) || (reset && !qFuzzyCompare(oldPadding, padding))) { emit q->topPaddingChanged(); emit q->availableHeightChanged(); - q->paddingChange(); + q->paddingChange(QMarginsF(leftPadding, topPadding, rightPadding, bottomPadding), + QMarginsF(leftPadding, oldPadding, rightPadding, bottomPadding)); } } @@ -84,7 +85,8 @@ void QQuickControlPrivate::setLeftPadding(qreal value, bool reset) if ((!reset && !qFuzzyCompare(oldPadding, value)) || (reset && !qFuzzyCompare(oldPadding, padding))) { emit q->leftPaddingChanged(); emit q->availableWidthChanged(); - q->paddingChange(); + q->paddingChange(QMarginsF(leftPadding, topPadding, rightPadding, bottomPadding), + QMarginsF(oldPadding, topPadding, rightPadding, bottomPadding)); } } @@ -97,7 +99,8 @@ void QQuickControlPrivate::setRightPadding(qreal value, bool reset) if ((!reset && !qFuzzyCompare(oldPadding, value)) || (reset && !qFuzzyCompare(oldPadding, padding))) { emit q->rightPaddingChanged(); emit q->availableWidthChanged(); - q->paddingChange(); + q->paddingChange(QMarginsF(leftPadding, topPadding, rightPadding, bottomPadding), + QMarginsF(leftPadding, topPadding, oldPadding, bottomPadding)); } } @@ -110,7 +113,8 @@ void QQuickControlPrivate::setBottomPadding(qreal value, bool reset) if ((!reset && !qFuzzyCompare(oldPadding, value)) || (reset && !qFuzzyCompare(oldPadding, padding))) { emit q->bottomPaddingChanged(); emit q->availableHeightChanged(); - q->paddingChange(); + q->paddingChange(QMarginsF(leftPadding, topPadding, rightPadding, bottomPadding), + QMarginsF(leftPadding, topPadding, rightPadding, oldPadding)); } } @@ -182,21 +186,23 @@ void QQuickControl::setPadding(qreal padding) Q_D(QQuickControl); if (qFuzzyCompare(d->padding, padding)) return; + QMarginsF oldPadding(leftPadding(), topPadding(), rightPadding(), bottomPadding()); d->padding = padding; emit paddingChanged(); - if (!d->hasTopPadding) + QMarginsF newPadding(leftPadding(), topPadding(), rightPadding(), bottomPadding()); + if (!qFuzzyCompare(newPadding.top(), oldPadding.top())) emit topPaddingChanged(); - if (!d->hasLeftPadding) + if (!qFuzzyCompare(newPadding.left(), oldPadding.left())) emit leftPaddingChanged(); - if (!d->hasRightPadding) + if (!qFuzzyCompare(newPadding.right(), oldPadding.right())) emit rightPaddingChanged(); - if (!d->hasBottomPadding) + if (!qFuzzyCompare(newPadding.bottom(), oldPadding.bottom())) emit bottomPaddingChanged(); - if (!d->hasTopPadding || !d->hasBottomPadding) + if (!qFuzzyCompare(newPadding.top(), oldPadding.top()) || !qFuzzyCompare(newPadding.bottom(), oldPadding.bottom())) emit availableHeightChanged(); - if (!d->hasLeftPadding || !d->hasRightPadding) + if (!qFuzzyCompare(newPadding.left(), oldPadding.left()) || !qFuzzyCompare(newPadding.right(), oldPadding.right())) emit availableWidthChanged(); - paddingChange(); + paddingChange(newPadding, oldPadding); } void QQuickControl::resetPadding() @@ -428,8 +434,10 @@ void QQuickControl::mirrorChange() emit mirroredChanged(); } -void QQuickControl::paddingChange() +void QQuickControl::paddingChange(const QMarginsF &newPadding, const QMarginsF &oldPadding) { + Q_UNUSED(newPadding); + Q_UNUSED(oldPadding); } QT_END_NAMESPACE diff --git a/src/controls/qquickcontrol_p.h b/src/controls/qquickcontrol_p.h index 8d679e6a..7d74e5df 100644 --- a/src/controls/qquickcontrol_p.h +++ b/src/controls/qquickcontrol_p.h @@ -124,8 +124,7 @@ protected: void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) Q_DECL_OVERRIDE; virtual void mirrorChange(); - - virtual void paddingChange(); + virtual void paddingChange(const QMarginsF &newPadding, const QMarginsF &oldPadding); private: Q_DISABLE_COPY(QQuickControl) -- cgit v1.2.3