diff options
author | J-P Nurmi <jpnurmi@theqtcompany.com> | 2015-06-03 17:02:20 +0200 |
---|---|---|
committer | J-P Nurmi <jpnurmi@theqtcompany.com> | 2015-06-03 16:29:19 +0000 |
commit | fff6239d2f98b41f4ef003f06f356fb0730f9d57 (patch) | |
tree | 4d1d5512b6e19d88e99e5ff79d0ea781fab52d17 | |
parent | f0ceecaf0b51809a076ed0add159c95cada528bf (diff) |
Control::availableWidth & availableHeight
The recently introduced contentWidth/Height was ambiguous. It had even
different semantics than in Containers, TextXxx & Flickable etc. Thus,
replace with availableWidth/Height.
Change-Id: Iaeef25ec82b395c602724d222ca73666460ffd29
Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
-rw-r--r-- | src/controls/qquickcontainer.cpp | 33 | ||||
-rw-r--r-- | src/controls/qquickcontainer_p.h | 6 | ||||
-rw-r--r-- | src/controls/qquickcontainer_p_p.h | 3 | ||||
-rw-r--r-- | src/controls/qquickcontrol.cpp | 42 | ||||
-rw-r--r-- | src/controls/qquickcontrol_p.h | 12 | ||||
-rw-r--r-- | src/controls/qquickcontrol_p_p.h | 3 | ||||
-rw-r--r-- | src/imports/controls/Button.qml | 4 | ||||
-rw-r--r-- | tests/auto/controls/data/tst_control.qml | 93 |
8 files changed, 134 insertions, 62 deletions
diff --git a/src/controls/qquickcontainer.cpp b/src/controls/qquickcontainer.cpp index 95464e7e..456dd6c8 100644 --- a/src/controls/qquickcontainer.cpp +++ b/src/controls/qquickcontainer.cpp @@ -53,16 +53,6 @@ QQuickContainerPrivate::QQuickContainerPrivate() : { } -qreal QQuickContainerPrivate::getContentWidth() const -{ - return contentWidth; -} - -qreal QQuickContainerPrivate::getContentHeight() const -{ - return contentHeight; -} - QQuickContainer::QQuickContainer(QQuickItem *parent) : QQuickControl(*(new QQuickContainerPrivate), parent) { @@ -79,6 +69,12 @@ QQuickContainer::QQuickContainer(QQuickContainerPrivate &dd, QQuickItem *parent) TODO */ +qreal QQuickContainer::contentWidth() const +{ + Q_D(const QQuickContainer); + return d->contentWidth; +} + void QQuickContainer::setContentWidth(qreal width) { Q_D(QQuickContainer); @@ -88,6 +84,12 @@ void QQuickContainer::setContentWidth(qreal width) } } +qreal QQuickContainer::contentHeight() const +{ + Q_D(const QQuickContainer); + return d->contentHeight; +} + void QQuickContainer::setContentHeight(qreal height) { Q_D(QQuickContainer); @@ -129,15 +131,4 @@ void QQuickContainer::contentItemChange(QQuickItem *newItem, QQuickItem *oldItem Q_UNUSED(oldItem); } -void QQuickContainer::geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) -{ - Q_D(QQuickContainer); - QQuickItem::geometryChanged(newGeometry, oldGeometry); - d->resizeBackground(); -} - -void QQuickContainer::paddingChange() -{ -} - QT_END_NAMESPACE diff --git a/src/controls/qquickcontainer_p.h b/src/controls/qquickcontainer_p.h index 1deda597..6e3e224a 100644 --- a/src/controls/qquickcontainer_p.h +++ b/src/controls/qquickcontainer_p.h @@ -64,7 +64,10 @@ class Q_QUICKCONTROLS_EXPORT QQuickContainer : public QQuickControl public: explicit QQuickContainer(QQuickItem *parent = Q_NULLPTR); + qreal contentWidth() const; void setContentWidth(qreal width); + + qreal contentHeight() const; void setContentHeight(qreal height); QQuickItem *contentItem() const; @@ -80,9 +83,6 @@ protected: virtual void contentItemChange(QQuickItem *newItem, QQuickItem *oldItem); - void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) Q_DECL_OVERRIDE; - void paddingChange() Q_DECL_OVERRIDE; - private: Q_DISABLE_COPY(QQuickContainer) Q_DECLARE_PRIVATE(QQuickContainer) diff --git a/src/controls/qquickcontainer_p_p.h b/src/controls/qquickcontainer_p_p.h index f7b605f0..c0b52cec 100644 --- a/src/controls/qquickcontainer_p_p.h +++ b/src/controls/qquickcontainer_p_p.h @@ -57,9 +57,6 @@ class Q_QUICKCONTROLS_EXPORT QQuickContainerPrivate : public QQuickControlPrivat public: QQuickContainerPrivate(); - qreal getContentWidth() const Q_DECL_OVERRIDE; - qreal getContentHeight() const Q_DECL_OVERRIDE; - qreal contentWidth; qreal contentHeight; QQuickItem *contentItem; diff --git a/src/controls/qquickcontrol.cpp b/src/controls/qquickcontrol.cpp index ac4c257d..db135fe1 100644 --- a/src/controls/qquickcontrol.cpp +++ b/src/controls/qquickcontrol.cpp @@ -62,18 +62,6 @@ void QQuickControlPrivate::mirrorChange() q->mirrorChange(); } -qreal QQuickControlPrivate::getContentWidth() const -{ - Q_Q(const QQuickControl); - return q->width() - q->leftPadding() - q->rightPadding(); -} - -qreal QQuickControlPrivate::getContentHeight() const -{ - Q_Q(const QQuickControl); - return q->height() - q->topPadding() - q->bottomPadding(); -} - void QQuickControlPrivate::setTopPadding(qreal value, bool reset) { Q_Q(QQuickControl); @@ -82,6 +70,7 @@ void QQuickControlPrivate::setTopPadding(qreal value, bool reset) hasTopPadding = !reset; if ((!reset && !qFuzzyCompare(oldPadding, value)) || (reset && !qFuzzyCompare(oldPadding, padding))) { emit q->topPaddingChanged(); + emit q->availableHeightChanged(); q->paddingChange(); } } @@ -94,6 +83,7 @@ void QQuickControlPrivate::setLeftPadding(qreal value, bool reset) hasLeftPadding = !reset; if ((!reset && !qFuzzyCompare(oldPadding, value)) || (reset && !qFuzzyCompare(oldPadding, padding))) { emit q->leftPaddingChanged(); + emit q->availableWidthChanged(); q->paddingChange(); } } @@ -106,6 +96,7 @@ void QQuickControlPrivate::setRightPadding(qreal value, bool reset) hasRightPadding = !reset; if ((!reset && !qFuzzyCompare(oldPadding, value)) || (reset && !qFuzzyCompare(oldPadding, padding))) { emit q->rightPaddingChanged(); + emit q->availableWidthChanged(); q->paddingChange(); } } @@ -118,6 +109,7 @@ void QQuickControlPrivate::setBottomPadding(qreal value, bool reset) hasBottomPadding = !reset; if ((!reset && !qFuzzyCompare(oldPadding, value)) || (reset && !qFuzzyCompare(oldPadding, padding))) { emit q->bottomPaddingChanged(); + emit q->availableHeightChanged(); q->paddingChange(); } } @@ -149,21 +141,19 @@ QQuickControl::QQuickControl(QQuickControlPrivate &dd, QQuickItem *parent) : } /*! - \qmlproperty real QtQuickControls2::Control::contentWidth - \qmlproperty real QtQuickControls2::Control::contentHeight + \qmlproperty real QtQuickControls2::Control::availableWidth + \qmlproperty real QtQuickControls2::Control::availableHeight TODO */ -qreal QQuickControl::contentWidth() const +qreal QQuickControl::availableWidth() const { - Q_D(const QQuickControl); - return d->getContentWidth(); + return width() - leftPadding() - rightPadding(); } -qreal QQuickControl::contentHeight() const +qreal QQuickControl::availableHeight() const { - Q_D(const QQuickControl); - return d->getContentHeight(); + return height() - topPadding() - bottomPadding(); } /*! @@ -196,6 +186,10 @@ void QQuickControl::setPadding(qreal padding) emit rightPaddingChanged(); if (!d->hasBottomPadding) emit bottomPaddingChanged(); + if (!d->hasTopPadding || !d->hasBottomPadding) + emit availableHeightChanged(); + if (!d->hasLeftPadding || !d->hasRightPadding) + emit availableWidthChanged(); paddingChange(); } @@ -362,8 +356,10 @@ void QQuickControl::geometryChanged(const QRectF &newGeometry, const QRectF &old Q_D(QQuickControl); QQuickItem::geometryChanged(newGeometry, oldGeometry); d->resizeBackground(); - emit contentWidthChanged(); - emit contentHeightChanged(); + if (newGeometry.width() != oldGeometry.width()) + emit availableWidthChanged(); + if (newGeometry.width() != oldGeometry.height()) + emit availableHeightChanged(); } void QQuickControl::mirrorChange() @@ -374,8 +370,6 @@ void QQuickControl::mirrorChange() void QQuickControl::paddingChange() { - emit contentWidthChanged(); - emit contentHeightChanged(); } QT_END_NAMESPACE diff --git a/src/controls/qquickcontrol_p.h b/src/controls/qquickcontrol_p.h index 737a917f..8d679e6a 100644 --- a/src/controls/qquickcontrol_p.h +++ b/src/controls/qquickcontrol_p.h @@ -58,8 +58,8 @@ class QQuickControlPrivate; class Q_QUICKCONTROLS_EXPORT QQuickControl : public QQuickItem { Q_OBJECT - Q_PROPERTY(qreal contentWidth READ contentWidth NOTIFY contentWidthChanged) - Q_PROPERTY(qreal contentHeight READ contentHeight NOTIFY contentHeightChanged) + Q_PROPERTY(qreal availableWidth READ availableWidth NOTIFY availableWidthChanged) + Q_PROPERTY(qreal availableHeight READ availableHeight NOTIFY availableHeightChanged) Q_PROPERTY(qreal padding READ padding WRITE setPadding RESET resetPadding NOTIFY paddingChanged FINAL) Q_PROPERTY(qreal topPadding READ topPadding WRITE setTopPadding RESET resetTopPadding NOTIFY topPaddingChanged FINAL) Q_PROPERTY(qreal leftPadding READ leftPadding WRITE setLeftPadding RESET resetLeftPadding NOTIFY leftPaddingChanged FINAL) @@ -73,8 +73,8 @@ class Q_QUICKCONTROLS_EXPORT QQuickControl : public QQuickItem public: explicit QQuickControl(QQuickItem *parent = Q_NULLPTR); - qreal contentWidth() const; - qreal contentHeight() const; + qreal availableWidth() const; + qreal availableHeight() const; qreal padding() const; void setPadding(qreal padding); @@ -106,8 +106,8 @@ public: void setBackground(QQuickItem *background); Q_SIGNALS: - void contentWidthChanged(); - void contentHeightChanged(); + void availableWidthChanged(); + void availableHeightChanged(); void paddingChanged(); void topPaddingChanged(); void leftPaddingChanged(); diff --git a/src/controls/qquickcontrol_p_p.h b/src/controls/qquickcontrol_p_p.h index 3a2154f1..d157f3e3 100644 --- a/src/controls/qquickcontrol_p_p.h +++ b/src/controls/qquickcontrol_p_p.h @@ -61,9 +61,6 @@ public: void mirrorChange() Q_DECL_OVERRIDE; - virtual qreal getContentWidth() const; - virtual qreal getContentHeight() const; - void setTopPadding(qreal value, bool reset = false); void setLeftPadding(qreal value, bool reset = false); void setRightPadding(qreal value, bool reset = false); diff --git a/src/imports/controls/Button.qml b/src/imports/controls/Button.qml index c0c4033c..899b3d3c 100644 --- a/src/imports/controls/Button.qml +++ b/src/imports/controls/Button.qml @@ -55,8 +55,8 @@ AbstractButton { label: Text { x: control.leftPadding y: control.topPadding - width: control.contentWidth - height: control.contentHeight + width: control.availableWidth + height: control.availableHeight text: control.text color: control.Theme.selectedTextColor diff --git a/tests/auto/controls/data/tst_control.qml b/tests/auto/controls/data/tst_control.qml index da0a979c..555328a1 100644 --- a/tests/auto/controls/data/tst_control.qml +++ b/tests/auto/controls/data/tst_control.qml @@ -76,6 +76,99 @@ TestCase { compare(control.layoutDirection, Qt.LeftToRight) compare(control.effectiveLayoutDirection, Qt.LeftToRight) compare(control.mirrored, false) + compare(control.padding, 0) + compare(control.topPadding, 0) + compare(control.leftPadding, 0) + compare(control.rightPadding, 0) + compare(control.bottomPadding, 0) + compare(control.availableWidth, 0) + compare(control.availableHeight, 0) + control.destroy() + } + + function test_padding() { + var control = component.createObject(testCase) + + control.width = 100 + control.height = 100 + + control.padding = 10 + compare(control.padding, 10) + compare(control.topPadding, 10) + compare(control.leftPadding, 10) + compare(control.rightPadding, 10) + compare(control.bottomPadding, 10) + + control.topPadding = 20 + compare(control.padding, 10) + compare(control.topPadding, 20) + compare(control.leftPadding, 10) + compare(control.rightPadding, 10) + compare(control.bottomPadding, 10) + + control.leftPadding = 30 + compare(control.padding, 10) + compare(control.topPadding, 20) + compare(control.leftPadding, 30) + compare(control.rightPadding, 10) + compare(control.bottomPadding, 10) + + control.rightPadding = 40 + compare(control.padding, 10) + compare(control.topPadding, 20) + compare(control.leftPadding, 30) + compare(control.rightPadding, 40) + compare(control.bottomPadding, 10) + + control.bottomPadding = 50 + compare(control.padding, 10) + compare(control.topPadding, 20) + compare(control.leftPadding, 30) + compare(control.rightPadding, 40) + compare(control.bottomPadding, 50) + + control.padding = 60 + compare(control.padding, 60) + compare(control.topPadding, 20) + compare(control.leftPadding, 30) + compare(control.rightPadding, 40) + compare(control.bottomPadding, 50) + + control.destroy() + } + + function test_availableSize() { + var control = component.createObject(testCase) + + control.width = 100 + control.height = 100 + compare(control.availableWidth, 100) + compare(control.availableHeight, 100) + + control.padding = 10 + compare(control.availableWidth, 80) + compare(control.availableHeight, 80) + + control.topPadding = 20 + compare(control.availableWidth, 80) + compare(control.availableHeight, 70) + + control.leftPadding = 30 + compare(control.availableWidth, 60) + compare(control.availableHeight, 70) + + control.rightPadding = 40 + compare(control.availableWidth, 30) + compare(control.availableHeight, 70) + + control.bottomPadding = 50 + compare(control.availableWidth, 30) + compare(control.availableHeight, 30) + + control.padding = 60 + compare(control.availableWidth, 30) + compare(control.availableHeight, 30) + control.destroy() } |