diff options
author | J-P Nurmi <jpnurmi@qt.io> | 2018-02-21 23:11:25 +0100 |
---|---|---|
committer | J-P Nurmi <jpnurmi@qt.io> | 2018-04-13 11:26:45 +0000 |
commit | ec6cc9921f4b804ed309b7dbfae6ee3b1cf3d8a7 (patch) | |
tree | 02e9b87f41a139557c12333cc5473c038e429578 | |
parent | 3e3a4062ae8051d862b39420e0955ac5e9fbe7a2 (diff) |
Control: add implicitContentWidth|Height properties
[ChangeLog][Controls][Control] Added implicitContentWidth and
implicitContentHeight properties that can be used to simplify
complex implicit size bindings.
Change-Id: I6ccef572c013605058808ce2ad17f8bd82f49ef0
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
-rw-r--r-- | src/quicktemplates2/qquickcontainer.cpp | 67 | ||||
-rw-r--r-- | src/quicktemplates2/qquickcontainer_p_p.h | 6 | ||||
-rw-r--r-- | src/quicktemplates2/qquickcontrol.cpp | 134 | ||||
-rw-r--r-- | src/quicktemplates2/qquickcontrol_p.h | 7 | ||||
-rw-r--r-- | src/quicktemplates2/qquickcontrol_p_p.h | 9 | ||||
-rw-r--r-- | src/quicktemplates2/qquickdialogbuttonbox.cpp | 8 | ||||
-rw-r--r-- | src/quicktemplates2/qquickmenubar.cpp | 8 | ||||
-rw-r--r-- | src/quicktemplates2/qquickpane.cpp | 96 | ||||
-rw-r--r-- | src/quicktemplates2/qquickpane_p_p.h | 8 | ||||
-rw-r--r-- | src/quicktemplates2/qquickscrollview.cpp | 23 | ||||
-rw-r--r-- | src/quicktemplates2/qquickswipeview.cpp | 6 | ||||
-rw-r--r-- | src/quicktemplates2/qquicktabbar.cpp | 10 | ||||
-rw-r--r-- | tests/auto/controls/data/tst_control.qml | 47 | ||||
-rw-r--r-- | tests/auto/controls/data/tst_frame.qml | 8 | ||||
-rw-r--r-- | tests/auto/controls/data/tst_groupbox.qml | 8 | ||||
-rw-r--r-- | tests/auto/controls/data/tst_page.qml | 8 | ||||
-rw-r--r-- | tests/auto/controls/data/tst_pane.qml | 10 | ||||
-rw-r--r-- | tests/auto/controls/data/tst_tabbar.qml | 24 | ||||
-rw-r--r-- | tests/auto/controls/data/tst_toolbar.qml | 8 |
19 files changed, 324 insertions, 171 deletions
diff --git a/src/quicktemplates2/qquickcontainer.cpp b/src/quicktemplates2/qquickcontainer.cpp index b3d0e705..44f943d9 100644 --- a/src/quicktemplates2/qquickcontainer.cpp +++ b/src/quicktemplates2/qquickcontainer.cpp @@ -210,6 +210,8 @@ void QQuickContainerPrivate::init() contentModel = new QQmlObjectModel(q); QObject::connect(contentModel, &QQmlObjectModel::countChanged, q, &QQuickContainer::countChanged); QObject::connect(contentModel, &QQmlObjectModel::childrenChanged, q, &QQuickContainer::contentChildrenChanged); + connect(q, &QQuickControl::implicitContentWidthChanged, this, &QQuickContainerPrivate::updateContentWidth); + connect(q, &QQuickControl::implicitContentHeightChanged, this, &QQuickContainerPrivate::updateContentHeight); } void QQuickContainerPrivate::cleanup() @@ -385,20 +387,6 @@ void QQuickContainerPrivate::itemDestroyed(QQuickItem *item) QQuickControlPrivate::itemDestroyed(item); } -void QQuickContainerPrivate::itemImplicitWidthChanged(QQuickItem *item) -{ - QQuickControlPrivate::itemImplicitWidthChanged(item); - if (item == contentItem) - updateContentWidth(); -} - -void QQuickContainerPrivate::itemImplicitHeightChanged(QQuickItem *item) -{ - QQuickControlPrivate::itemImplicitHeightChanged(item); - if (item == contentItem) - updateContentHeight(); -} - void QQuickContainerPrivate::contentData_append(QQmlListProperty<QObject> *prop, QObject *obj) { QQuickContainer *q = static_cast<QQuickContainer *>(prop->object); @@ -456,67 +444,26 @@ void QQuickContainerPrivate::contentChildren_clear(QQmlListProperty<QQuickItem> return QQuickContainerPrivate::get(q)->contentModel->clear(); } -qreal QQuickContainerPrivate::getContentWidth() const -{ - return contentItem ? contentItem->implicitWidth() : 0; -} - -qreal QQuickContainerPrivate::getContentHeight() const -{ - return contentItem ? contentItem->implicitHeight() : 0; -} - void QQuickContainerPrivate::updateContentWidth() { Q_Q(QQuickContainer); - if (hasContentWidth) - return; - - const qreal oldContentWidth = contentWidth; - contentWidth = getContentWidth(); - if (qFuzzyCompare(contentWidth, oldContentWidth)) + if (hasContentWidth || qFuzzyCompare(contentWidth, implicitContentWidth)) return; + contentWidth = implicitContentWidth; emit q->contentWidthChanged(); } void QQuickContainerPrivate::updateContentHeight() { Q_Q(QQuickContainer); - if (hasContentHeight) - return; - - const qreal oldContentHeight = contentHeight; - contentHeight = getContentHeight(); - if (qFuzzyCompare(contentHeight, oldContentHeight)) + if (hasContentHeight || qFuzzyCompare(contentHeight, implicitContentHeight)) return; + contentHeight = implicitContentHeight; emit q->contentHeightChanged(); } -void QQuickContainerPrivate::updateContentSize() -{ - Q_Q(QQuickContainer); - if (hasContentWidth && hasContentHeight) - return; - - const qreal oldContentWidth = contentWidth; - if (!hasContentWidth) - contentWidth = getContentWidth(); - - const qreal oldContentHeight = contentHeight; - if (!hasContentHeight) - contentHeight = getContentHeight(); - - const bool widthChanged = !qFuzzyCompare(contentWidth, oldContentWidth); - const bool heightChanged = !qFuzzyCompare(contentHeight, oldContentHeight); - - if (widthChanged) - emit q->contentWidthChanged(); - if (heightChanged) - emit q->contentHeightChanged(); -} - QQuickContainer::QQuickContainer(QQuickItem *parent) : QQuickControl(*(new QQuickContainerPrivate), parent) { @@ -955,8 +902,6 @@ void QQuickContainer::contentItemChange(QQuickItem *newItem, QQuickItem *oldItem if (signalIndex != -1) QMetaObject::connect(newItem, signalIndex, this, slotIndex); } - - d->updateContentSize(); } bool QQuickContainer::isContent(QQuickItem *item) const diff --git a/src/quicktemplates2/qquickcontainer_p_p.h b/src/quicktemplates2/qquickcontainer_p_p.h index 5c8a8037..28190f07 100644 --- a/src/quicktemplates2/qquickcontainer_p_p.h +++ b/src/quicktemplates2/qquickcontainer_p_p.h @@ -81,8 +81,6 @@ public: void itemSiblingOrderChanged(QQuickItem *item) override; void itemParentChanged(QQuickItem *item, QQuickItem *parent) override; void itemDestroyed(QQuickItem *item) override; - void itemImplicitWidthChanged(QQuickItem *item) override; - void itemImplicitHeightChanged(QQuickItem *item) override; static void contentData_append(QQmlListProperty<QObject> *prop, QObject *obj); static int contentData_count(QQmlListProperty<QObject> *prop); @@ -94,12 +92,8 @@ public: static QQuickItem *contentChildren_at(QQmlListProperty<QQuickItem> *prop, int index); static void contentChildren_clear(QQmlListProperty<QQuickItem> *prop); - virtual qreal getContentWidth() const; - virtual qreal getContentHeight() const; - void updateContentWidth(); void updateContentHeight(); - void updateContentSize(); bool hasContentWidth; bool hasContentHeight; diff --git a/src/quicktemplates2/qquickcontrol.cpp b/src/quicktemplates2/qquickcontrol.cpp index 7a1bb496..de68b4ef 100644 --- a/src/quicktemplates2/qquickcontrol.cpp +++ b/src/quicktemplates2/qquickcontrol.cpp @@ -130,6 +130,8 @@ QQuickControlPrivate::QQuickControlPrivate() padding(0), horizontalPadding(0), verticalPadding(0), + implicitContentWidth(0), + implicitContentHeight(0), spacing(0), focusPolicy(Qt::NoFocus), focusReason(Qt::OtherFocusReason), @@ -346,8 +348,10 @@ void QQuickControlPrivate::setContentItem_helper(QQuickItem *item, bool notify) cancelContentItem(); QQuickItem *oldContentItem = contentItem; - if (oldContentItem) + if (oldContentItem) { disconnect(oldContentItem, &QQuickItem::baselineOffsetChanged, this, &QQuickControlPrivate::updateBaselineOffset); + removeImplicitSizeListener(oldContentItem); + } contentItem = item; q->contentItemChange(item, oldContentItem); @@ -359,13 +363,57 @@ void QQuickControlPrivate::setContentItem_helper(QQuickItem *item, bool notify) item->setParentItem(q); if (componentComplete) resizeContent(); + addImplicitSizeListener(contentItem); } + + updateImplicitContentSize(); updateBaselineOffset(); if (notify && !contentItem.isExecuting()) emit q->contentItemChanged(); } +qreal QQuickControlPrivate::getContentWidth() const +{ + return contentItem ? contentItem->implicitWidth() : 0; +} + +qreal QQuickControlPrivate::getContentHeight() const +{ + return contentItem ? contentItem->implicitHeight() : 0; +} + +void QQuickControlPrivate::updateImplicitContentWidth() +{ + Q_Q(QQuickControl); + const qreal oldWidth = implicitContentWidth; + implicitContentWidth = getContentWidth(); + if (!qFuzzyCompare(implicitContentWidth, oldWidth)) + emit q->implicitContentWidthChanged(); +} + +void QQuickControlPrivate::updateImplicitContentHeight() +{ + Q_Q(QQuickControl); + const qreal oldHeight = implicitContentHeight; + implicitContentHeight = getContentHeight(); + if (!qFuzzyCompare(implicitContentHeight, oldHeight)) + emit q->implicitContentHeightChanged(); +} + +void QQuickControlPrivate::updateImplicitContentSize() +{ + Q_Q(QQuickControl); + const qreal oldWidth = implicitContentWidth; + const qreal oldHeight = implicitContentHeight; + implicitContentWidth = getContentWidth(); + implicitContentHeight = getContentHeight(); + if (!qFuzzyCompare(implicitContentWidth, oldWidth)) + emit q->implicitContentWidthChanged(); + if (!qFuzzyCompare(implicitContentHeight, oldHeight)) + emit q->implicitContentHeightChanged(); +} + #if QT_CONFIG(accessibility) void QQuickControlPrivate::accessibilityActiveChanged(bool active) { @@ -750,6 +798,8 @@ void QQuickControlPrivate::itemImplicitWidthChanged(QQuickItem *item) Q_Q(QQuickControl); if (item == background) emit q->implicitBackgroundWidthChanged(); + else if (item == contentItem) + updateImplicitContentWidth(); } void QQuickControlPrivate::itemImplicitHeightChanged(QQuickItem *item) @@ -757,6 +807,8 @@ void QQuickControlPrivate::itemImplicitHeightChanged(QQuickItem *item) Q_Q(QQuickControl); if (item == background) emit q->implicitBackgroundHeightChanged(); + else if (item == contentItem) + updateImplicitContentHeight(); } void QQuickControlPrivate::itemDestroyed(QQuickItem *item) @@ -766,6 +818,9 @@ void QQuickControlPrivate::itemDestroyed(QQuickItem *item) background = nullptr; emit q->implicitBackgroundWidthChanged(); emit q->implicitBackgroundHeightChanged(); + } else if (item == contentItem) { + contentItem = nullptr; + updateImplicitContentSize(); } } @@ -787,6 +842,7 @@ QQuickControl::~QQuickControl() { Q_D(QQuickControl); d->removeImplicitSizeListener(d->background); + d->removeImplicitSizeListener(d->contentItem); } void QQuickControl::itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &value) @@ -1622,6 +1678,60 @@ void QQuickControl::resetVerticalPadding() /*! \since QtQuick.Controls 2.5 (Qt 5.12) + \qmlproperty real QtQuick.Controls::Control::implicitContentWidth + \readonly + + This property holds the implicit content width. + + For basic controls, the value is equal to \c {contentItem ? contentItem.implicitWidth : 0}. + For types that inherit Container or Pane, the value is calculated based on the content children. + + This is typically used, together with \l implicitBackgroundWidth, to calculate + the \l {Item::}{implicitWidth}: + + \code + Control { + implicitWidth: Math.max(implicitBackgroundWidth, implicitContentWidth + leftPadding + rightPadding) + } + \endcode + + \sa implicitContentHeight, implicitBackgroundWidth +*/ +qreal QQuickControl::implicitContentWidth() const +{ + Q_D(const QQuickControl); + return d->implicitContentWidth; +} + +/*! + \since QtQuick.Controls 2.5 (Qt 5.12) + \qmlproperty real QtQuick.Controls::Control::implicitContentHeight + \readonly + + This property holds the implicit content height. + + For basic controls, the value is equal to \c {contentItem ? contentItem.implicitHeight : 0}. + For types that inherit Container or Pane, the value is calculated based on the content children. + + This is typically used, together with \l implicitBackgroundHeight, to calculate + the \l {Item::}{implicitHeight}: + + \code + Control { + implicitHeight: Math.max(implicitBackgroundHeight, implicitContentHeight + topPadding + bottomPadding) + } + \endcode + + \sa implicitContentWidth, implicitBackgroundHeight +*/ +qreal QQuickControl::implicitContentHeight() const +{ + Q_D(const QQuickControl); + return d->implicitContentHeight; +} + +/*! + \since QtQuick.Controls 2.5 (Qt 5.12) \qmlproperty real QtQuick.Controls::Control::implicitBackgroundWidth \readonly @@ -1629,7 +1739,16 @@ void QQuickControl::resetVerticalPadding() The value is equal to \c {background ? background.implicitWidth : 0}. - \sa implicitBackgroundHeight + This is typically used, together with \l implicitContentWidth, to calculate + the \l {Item::}{implicitWidth}: + + \code + Control { + implicitWidth: Math.max(implicitBackgroundWidth, implicitContentWidth + leftPadding + rightPadding) + } + \endcode + + \sa implicitBackgroundHeight, implicitContentWidth */ qreal QQuickControl::implicitBackgroundWidth() const { @@ -1648,7 +1767,16 @@ qreal QQuickControl::implicitBackgroundWidth() const The value is equal to \c {background ? background.implicitHeight : 0}. - \sa implicitBackgroundWidth + This is typically used, together with \l implicitContentHeight, to calculate + the \l {Item::}{implicitHeight}: + + \code + Control { + implicitHeight: Math.max(implicitBackgroundHeight, implicitContentHeight + topPadding + bottomPadding) + } + \endcode + + \sa implicitBackgroundWidth, implicitContentHeight */ qreal QQuickControl::implicitBackgroundHeight() const { diff --git a/src/quicktemplates2/qquickcontrol_p.h b/src/quicktemplates2/qquickcontrol_p.h index bde03e94..5716a725 100644 --- a/src/quicktemplates2/qquickcontrol_p.h +++ b/src/quicktemplates2/qquickcontrol_p.h @@ -85,6 +85,8 @@ class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickControl : public QQuickItem // 2.5 (Qt 5.12) Q_PROPERTY(qreal horizontalPadding READ horizontalPadding WRITE setHorizontalPadding RESET resetHorizontalPadding NOTIFY horizontalPaddingChanged FINAL REVISION 5) Q_PROPERTY(qreal verticalPadding READ verticalPadding WRITE setVerticalPadding RESET resetVerticalPadding NOTIFY verticalPaddingChanged FINAL REVISION 5) + Q_PROPERTY(qreal implicitContentWidth READ implicitContentWidth NOTIFY implicitContentWidthChanged FINAL REVISION 5) + Q_PROPERTY(qreal implicitContentHeight READ implicitContentHeight NOTIFY implicitContentHeightChanged FINAL REVISION 5) Q_PROPERTY(qreal implicitBackgroundWidth READ implicitBackgroundWidth NOTIFY implicitBackgroundWidthChanged FINAL REVISION 5) Q_PROPERTY(qreal implicitBackgroundHeight READ implicitBackgroundHeight NOTIFY implicitBackgroundHeightChanged FINAL REVISION 5) Q_CLASSINFO("DeferredPropertyNames", "background,contentItem") @@ -172,6 +174,9 @@ public: void setVerticalPadding(qreal padding); void resetVerticalPadding(); + qreal implicitContentWidth() const; + qreal implicitContentHeight() const; + qreal implicitBackgroundWidth() const; qreal implicitBackgroundHeight() const; @@ -201,6 +206,8 @@ Q_SIGNALS: // 2.5 (Qt 5.12) Q_REVISION(5) void horizontalPaddingChanged(); Q_REVISION(5) void verticalPaddingChanged(); + Q_REVISION(5) void implicitContentWidthChanged(); + Q_REVISION(5) void implicitContentHeightChanged(); Q_REVISION(5) void implicitBackgroundWidthChanged(); Q_REVISION(5) void implicitBackgroundHeightChanged(); diff --git a/src/quicktemplates2/qquickcontrol_p_p.h b/src/quicktemplates2/qquickcontrol_p_p.h index 5c0d253e..f1873da9 100644 --- a/src/quicktemplates2/qquickcontrol_p_p.h +++ b/src/quicktemplates2/qquickcontrol_p_p.h @@ -166,6 +166,13 @@ public: void itemImplicitHeightChanged(QQuickItem *item) override; void itemDestroyed(QQuickItem *item) override; + virtual qreal getContentWidth() const; + virtual qreal getContentHeight() const; + + void updateImplicitContentWidth(); + void updateImplicitContentHeight(); + void updateImplicitContentSize(); + struct ExtraData { ExtraData(); bool hasTopPadding; @@ -194,6 +201,8 @@ public: qreal padding; qreal horizontalPadding; qreal verticalPadding; + qreal implicitContentWidth; + qreal implicitContentHeight; qreal spacing; QLocale locale; QFont resolvedFont; diff --git a/src/quicktemplates2/qquickdialogbuttonbox.cpp b/src/quicktemplates2/qquickdialogbuttonbox.cpp index bc5b51d9..5e555da3 100644 --- a/src/quicktemplates2/qquickdialogbuttonbox.cpp +++ b/src/quicktemplates2/qquickdialogbuttonbox.cpp @@ -212,7 +212,7 @@ void QQuickDialogButtonBoxPrivate::itemImplicitWidthChanged(QQuickItem *item) if (item == contentItem) resizeContent(); else - updateContentWidth(); + updateImplicitContentWidth(); } void QQuickDialogButtonBoxPrivate::itemImplicitHeightChanged(QQuickItem *item) @@ -221,7 +221,7 @@ void QQuickDialogButtonBoxPrivate::itemImplicitHeightChanged(QQuickItem *item) if (item == contentItem) resizeContent(); else - updateContentHeight(); + updateImplicitContentHeight(); } // adapted from QStyle::alignedRect() @@ -725,7 +725,7 @@ void QQuickDialogButtonBox::itemAdded(int index, QQuickItem *item) QObjectPrivate::connect(button, &QQuickAbstractButton::clicked, d, &QQuickDialogButtonBoxPrivate::handleClick); if (QQuickDialogButtonBoxAttached *attached = qobject_cast<QQuickDialogButtonBoxAttached *>(qmlAttachedPropertiesObject<QQuickDialogButtonBox>(item, false))) QQuickDialogButtonBoxAttachedPrivate::get(attached)->setButtonBox(this); - d->updateContentSize(); + d->updateImplicitContentSize(); if (isComponentComplete()) polish(); } @@ -738,7 +738,7 @@ void QQuickDialogButtonBox::itemRemoved(int index, QQuickItem *item) QObjectPrivate::disconnect(button, &QQuickAbstractButton::clicked, d, &QQuickDialogButtonBoxPrivate::handleClick); if (QQuickDialogButtonBoxAttached *attached = qobject_cast<QQuickDialogButtonBoxAttached *>(qmlAttachedPropertiesObject<QQuickDialogButtonBox>(item, false))) QQuickDialogButtonBoxAttachedPrivate::get(attached)->setButtonBox(nullptr); - d->updateContentSize(); + d->updateImplicitContentSize(); if (isComponentComplete()) polish(); } diff --git a/src/quicktemplates2/qquickmenubar.cpp b/src/quicktemplates2/qquickmenubar.cpp index ca43f5af..2d4c7a4f 100644 --- a/src/quicktemplates2/qquickmenubar.cpp +++ b/src/quicktemplates2/qquickmenubar.cpp @@ -249,14 +249,14 @@ void QQuickMenuBarPrivate::itemImplicitWidthChanged(QQuickItem *item) { QQuickContainerPrivate::itemImplicitWidthChanged(item); if (item != contentItem) - updateContentWidth(); + updateImplicitContentWidth(); } void QQuickMenuBarPrivate::itemImplicitHeightChanged(QQuickItem *item) { QQuickContainerPrivate::itemImplicitHeightChanged(item); if (item != contentItem) - updateContentHeight(); + updateImplicitContentHeight(); } void QQuickMenuBarPrivate::contentData_append(QQmlListProperty<QObject> *prop, QObject *obj) @@ -540,7 +540,7 @@ void QQuickMenuBar::itemAdded(int index, QQuickItem *item) if (QQuickMenu *menu = menuBarItem->menu()) QObjectPrivate::connect(menu, &QQuickPopup::aboutToHide, d, &QQuickMenuBarPrivate::onMenuAboutToHide); } - d->updateContentSize(); + d->updateImplicitContentSize(); emit menusChanged(); } @@ -561,7 +561,7 @@ void QQuickMenuBar::itemRemoved(int index, QQuickItem *item) if (QQuickMenu *menu = menuBarItem->menu()) QObjectPrivate::disconnect(menu, &QQuickPopup::aboutToHide, d, &QQuickMenuBarPrivate::onMenuAboutToHide); } - d->updateContentSize(); + d->updateImplicitContentSize(); emit menusChanged(); } diff --git a/src/quicktemplates2/qquickpane.cpp b/src/quicktemplates2/qquickpane.cpp index d4c38fb6..72a5ee17 100644 --- a/src/quicktemplates2/qquickpane.cpp +++ b/src/quicktemplates2/qquickpane.cpp @@ -116,6 +116,18 @@ QQuickPanePrivate::QQuickPanePrivate() { } +void QQuickPanePrivate::init() +{ + Q_Q(QQuickPane); + q->setFlag(QQuickItem::ItemIsFocusScope); + q->setAcceptedMouseButtons(Qt::AllButtons); +#if QT_CONFIG(cursor) + q->setCursor(Qt::ArrowCursor); +#endif + connect(q, &QQuickControl::implicitContentWidthChanged, this, &QQuickPanePrivate::updateContentWidth); + connect(q, &QQuickControl::implicitContentHeightChanged, this, &QQuickPanePrivate::updateContentHeight); +} + QList<QQuickItem *> QQuickPanePrivate::contentChildItems() const { if (!contentItem) @@ -136,21 +148,17 @@ QQuickItem *QQuickPanePrivate::getContentItem() void QQuickPanePrivate::itemImplicitWidthChanged(QQuickItem *item) { QQuickControlPrivate::itemImplicitWidthChanged(item); - if (item == contentItem || item == firstChild) - updateContentWidth(); + + if (item == firstChild) + updateImplicitContentWidth(); } void QQuickPanePrivate::itemImplicitHeightChanged(QQuickItem *item) { QQuickControlPrivate::itemImplicitHeightChanged(item); - if (item == contentItem || item == firstChild) - updateContentHeight(); -} -void QQuickPanePrivate::itemDestroyed(QQuickItem *item) -{ - if (item == contentItem) - updateContentSize(); + if (item == firstChild) + updateImplicitContentHeight(); } void QQuickPanePrivate::contentChildrenChange() @@ -165,7 +173,7 @@ void QQuickPanePrivate::contentChildrenChange() firstChild = newFirstChild; } - updateContentSize(); + updateImplicitContentSize(); emit q->contentChildrenChanged(); } @@ -204,18 +212,11 @@ qreal QQuickPanePrivate::getContentHeight() const void QQuickPanePrivate::updateContentWidth() { Q_Q(QQuickPane); - if (hasContentWidth) - return; - - // a special case for width<->height dependent content (wrapping text) in ScrollView - if (contentWidth < 0 && !componentComplete) - return; - - qreal oldContentWidth = contentWidth; - contentWidth = getContentWidth(); - if (qFuzzyCompare(contentWidth, oldContentWidth)) + if (hasContentWidth || qFuzzyCompare(contentWidth, implicitContentWidth)) return; + const qreal oldContentWidth = contentWidth; + contentWidth = implicitContentWidth; q->contentSizeChange(QSizeF(contentWidth, contentHeight), QSizeF(oldContentWidth, contentHeight)); emit q->contentWidthChanged(); } @@ -223,56 +224,20 @@ void QQuickPanePrivate::updateContentWidth() void QQuickPanePrivate::updateContentHeight() { Q_Q(QQuickPane); - if (hasContentHeight) - return; - - // a special case for width<->height dependent content (wrapping text) in ScrollView - if (contentWidth < 0 && !componentComplete) - return; - - qreal oldContentHeight = contentHeight; - contentHeight = getContentHeight(); - if (qFuzzyCompare(contentHeight, oldContentHeight)) + if (hasContentHeight || qFuzzyCompare(contentHeight, implicitContentHeight)) return; + const qreal oldContentHeight = contentHeight; + contentHeight = implicitContentHeight; q->contentSizeChange(QSizeF(contentWidth, contentHeight), QSizeF(contentWidth, oldContentHeight)); emit q->contentHeightChanged(); } -void QQuickPanePrivate::updateContentSize() -{ - Q_Q(QQuickPane); - if ((hasContentWidth && hasContentHeight) || !componentComplete) - return; - - const qreal oldContentWidth = contentWidth; - if (!hasContentWidth) - contentWidth = getContentWidth(); - - const qreal oldContentHeight = contentHeight; - if (!hasContentHeight) - contentHeight = getContentHeight(); - - const bool widthChanged = !qFuzzyCompare(contentWidth, oldContentWidth); - const bool heightChanged = !qFuzzyCompare(contentHeight, oldContentHeight); - - if (widthChanged || heightChanged) - q->contentSizeChange(QSizeF(contentWidth, contentHeight), QSizeF(oldContentWidth, oldContentHeight)); - - if (widthChanged) - emit q->contentWidthChanged(); - if (heightChanged) - emit q->contentHeightChanged(); -} - QQuickPane::QQuickPane(QQuickItem *parent) : QQuickControl(*(new QQuickPanePrivate), parent) { - setFlag(QQuickItem::ItemIsFocusScope); - setAcceptedMouseButtons(Qt::AllButtons); -#if QT_CONFIG(cursor) - setCursor(Qt::ArrowCursor); -#endif + Q_D(QQuickPane); + d->init(); } QQuickPane::~QQuickPane() @@ -285,11 +250,8 @@ QQuickPane::~QQuickPane() QQuickPane::QQuickPane(QQuickPanePrivate &dd, QQuickItem *parent) : QQuickControl(dd, parent) { - setFlag(QQuickItem::ItemIsFocusScope); - setAcceptedMouseButtons(Qt::AllButtons); -#if QT_CONFIG(cursor) - setCursor(Qt::ArrowCursor); -#endif + Q_D(QQuickPane); + d->init(); } /*! @@ -421,7 +383,7 @@ void QQuickPane::componentComplete() { Q_D(QQuickPane); QQuickControl::componentComplete(); - d->updateContentSize(); + d->updateImplicitContentSize(); } void QQuickPane::contentItemChange(QQuickItem *newItem, QQuickItem *oldItem) diff --git a/src/quicktemplates2/qquickpane_p_p.h b/src/quicktemplates2/qquickpane_p_p.h index 2e09d82d..808b33c6 100644 --- a/src/quicktemplates2/qquickpane_p_p.h +++ b/src/quicktemplates2/qquickpane_p_p.h @@ -61,24 +61,24 @@ class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickPanePrivate : public QQuickControlP public: QQuickPanePrivate(); + void init(); + virtual QQmlListProperty<QObject> contentData(); virtual QQmlListProperty<QQuickItem> contentChildren(); virtual QList<QQuickItem *> contentChildItems() const; QQuickItem *getContentItem() override; - qreal getContentWidth() const; - qreal getContentHeight() const; + qreal getContentWidth() const override; + qreal getContentHeight() const override; void itemImplicitWidthChanged(QQuickItem *item) override; void itemImplicitHeightChanged(QQuickItem *item) override; - void itemDestroyed(QQuickItem *item) override; void contentChildrenChange(); void updateContentWidth(); void updateContentHeight(); - void updateContentSize(); bool hasContentWidth; bool hasContentHeight; diff --git a/src/quicktemplates2/qquickscrollview.cpp b/src/quicktemplates2/qquickscrollview.cpp index 2b348272..c4ca2caa 100644 --- a/src/quicktemplates2/qquickscrollview.cpp +++ b/src/quicktemplates2/qquickscrollview.cpp @@ -135,6 +135,8 @@ public: static QQuickItem *contentChildren_at(QQmlListProperty<QQuickItem> *prop, int index); static void contentChildren_clear(QQmlListProperty<QQuickItem> *prop); + void itemImplicitWidthChanged(QQuickItem *item) override; + bool wasTouched; QQuickFlickable *flickable; }; @@ -223,11 +225,11 @@ void QQuickScrollViewPrivate::updateContentWidth() return; const qreal cw = flickable->contentWidth(); - if (qFuzzyCompare(cw, contentWidth)) + if (qFuzzyCompare(cw, implicitContentWidth)) return; - contentWidth = cw; - emit q->contentWidthChanged(); + implicitContentWidth = cw; + emit q->implicitContentWidthChanged(); } void QQuickScrollViewPrivate::updateContentHeight() @@ -237,11 +239,11 @@ void QQuickScrollViewPrivate::updateContentHeight() return; const qreal ch = flickable->contentHeight(); - if (qFuzzyCompare(ch, contentHeight)) + if (qFuzzyCompare(ch, implicitContentHeight)) return; - contentHeight = ch; - emit q->contentHeightChanged(); + implicitContentHeight = ch; + emit q->implicitContentHeightChanged(); } QQuickScrollBar *QQuickScrollViewPrivate::verticalScrollBar() const @@ -363,6 +365,15 @@ void QQuickScrollViewPrivate::contentChildren_clear(QQmlListProperty<QQuickItem> children.clear(&children); } +void QQuickScrollViewPrivate::itemImplicitWidthChanged(QQuickItem *item) +{ + // a special case for width<->height dependent content (wrapping text) in ScrollView + if (contentWidth < 0 && !componentComplete) + return; + + QQuickPanePrivate::itemImplicitWidthChanged(item); +} + QQuickScrollView::QQuickScrollView(QQuickItem *parent) : QQuickPane(*(new QQuickScrollViewPrivate), parent) { diff --git a/src/quicktemplates2/qquickswipeview.cpp b/src/quicktemplates2/qquickswipeview.cpp index 4031513a..0f3b6851 100644 --- a/src/quicktemplates2/qquickswipeview.cpp +++ b/src/quicktemplates2/qquickswipeview.cpp @@ -189,7 +189,7 @@ void QQuickSwipeViewPrivate::itemImplicitWidthChanged(QQuickItem *item) Q_Q(QQuickSwipeView); QQuickContainerPrivate::itemImplicitWidthChanged(item); if (item == q->currentItem()) - updateContentWidth(); + updateImplicitContentWidth(); } void QQuickSwipeViewPrivate::itemImplicitHeightChanged(QQuickItem *item) @@ -197,7 +197,7 @@ void QQuickSwipeViewPrivate::itemImplicitHeightChanged(QQuickItem *item) Q_Q(QQuickSwipeView); QQuickContainerPrivate::itemImplicitHeightChanged(item); if (item == q->currentItem()) - updateContentHeight(); + updateImplicitContentHeight(); } qreal QQuickSwipeViewPrivate::getContentWidth() const @@ -220,7 +220,7 @@ QQuickSwipeView::QQuickSwipeView(QQuickItem *parent) Q_D(QQuickSwipeView); setFlag(ItemIsFocusScope); setActiveFocusOnTab(true); - QObjectPrivate::connect(this, &QQuickContainer::currentItemChanged, d, &QQuickContainerPrivate::updateContentSize); + QObjectPrivate::connect(this, &QQuickContainer::currentItemChanged, d, &QQuickControlPrivate::updateImplicitContentSize); } /*! diff --git a/src/quicktemplates2/qquicktabbar.cpp b/src/quicktemplates2/qquicktabbar.cpp index ff5bc1a8..9bb6eecf 100644 --- a/src/quicktemplates2/qquicktabbar.cpp +++ b/src/quicktemplates2/qquicktabbar.cpp @@ -241,7 +241,7 @@ void QQuickTabBarPrivate::itemGeometryChanged(QQuickItem *, QQuickGeometryChange { if (!updatingLayout) { if (change.sizeChange()) - updateContentSize(); + updateImplicitContentSize(); updateLayout(); } } @@ -250,14 +250,14 @@ void QQuickTabBarPrivate::itemImplicitWidthChanged(QQuickItem *item) { QQuickContainerPrivate::itemImplicitWidthChanged(item); if (item != contentItem) - updateContentWidth(); + updateImplicitContentWidth(); } void QQuickTabBarPrivate::itemImplicitHeightChanged(QQuickItem *item) { QQuickContainerPrivate::itemImplicitHeightChanged(item); if (item != contentItem) - updateContentHeight(); + updateImplicitContentHeight(); } QQuickTabBar::QQuickTabBar(QQuickItem *parent) @@ -368,7 +368,7 @@ void QQuickTabBar::itemAdded(int index, QQuickItem *item) QQuickTabBarAttached *attached = qobject_cast<QQuickTabBarAttached *>(qmlAttachedPropertiesObject<QQuickTabBar>(item)); if (attached) QQuickTabBarAttachedPrivate::get(attached)->update(this, index); - d->updateContentSize(); + d->updateImplicitContentSize(); if (isComponentComplete()) polish(); } @@ -389,7 +389,7 @@ void QQuickTabBar::itemRemoved(int index, QQuickItem *item) QQuickTabBarAttached *attached = qobject_cast<QQuickTabBarAttached *>(qmlAttachedPropertiesObject<QQuickTabBar>(item)); if (attached) QQuickTabBarAttachedPrivate::get(attached)->update(nullptr, -1); - d->updateContentSize(); + d->updateImplicitContentSize(); if (isComponentComplete()) polish(); } diff --git a/tests/auto/controls/data/tst_control.qml b/tests/auto/controls/data/tst_control.qml index 29a76e50..c6158a3e 100644 --- a/tests/auto/controls/data/tst_control.qml +++ b/tests/auto/controls/data/tst_control.qml @@ -1140,6 +1140,12 @@ TestCase { var implicitHeightSpy = createTemporaryObject(signalSpy, testCase, {target: control, signalName: "implicitHeightChanged"}) verify(implicitHeightSpy.valid) + var implicitContentWidthSpy = createTemporaryObject(signalSpy, testCase, {target: control, signalName: "implicitContentWidthChanged"}) + verify(implicitContentWidthSpy.valid) + + var implicitContentHeightSpy = createTemporaryObject(signalSpy, testCase, {target: control, signalName: "implicitContentHeightChanged"}) + verify(implicitContentHeightSpy.valid) + var implicitBackgroundWidthSpy = createTemporaryObject(signalSpy, testCase, {target: control, signalName: "implicitBackgroundWidthChanged"}) verify(implicitBackgroundWidthSpy.valid) @@ -1148,21 +1154,58 @@ TestCase { var implicitWidthChanges = 0 var implicitHeightChanges = 0 + var implicitContentWidthChanges = 0 + var implicitContentHeightChanges = 0 var implicitBackgroundWidthChanges = 0 var implicitBackgroundHeightChanges = 0 compare(control.implicitWidth, 0) compare(control.implicitHeight, 0) + compare(control.implicitContentWidth, 0) + compare(control.implicitContentHeight, 0) + compare(control.implicitBackgroundWidth, 0) + compare(control.implicitBackgroundHeight, 0) + + control.contentItem = rectangle.createObject(control, {implicitWidth: 10, implicitHeight: 20}) + compare(control.implicitWidth, 10) + compare(control.implicitHeight, 20) + compare(control.implicitContentWidth, 10) + compare(control.implicitContentHeight, 20) compare(control.implicitBackgroundWidth, 0) compare(control.implicitBackgroundHeight, 0) + compare(implicitWidthSpy.count, ++implicitWidthChanges) + compare(implicitHeightSpy.count, ++implicitHeightChanges) + compare(implicitBackgroundWidthSpy.count, implicitBackgroundWidthChanges) + compare(implicitBackgroundHeightSpy.count, implicitBackgroundHeightChanges) + compare(implicitContentWidthSpy.count, ++implicitContentWidthChanges) + compare(implicitContentHeightSpy.count, ++implicitContentHeightChanges) + + control.contentItem.implicitWidth += 1 + control.contentItem.implicitHeight += 1 + compare(control.implicitWidth, 11) + compare(control.implicitHeight, 21) + compare(control.implicitContentWidth, 11) + compare(control.implicitContentHeight, 21) + compare(control.implicitBackgroundWidth, 0) + compare(control.implicitBackgroundHeight, 0) + compare(implicitWidthSpy.count, ++implicitWidthChanges) + compare(implicitHeightSpy.count, ++implicitHeightChanges) + compare(implicitContentWidthSpy.count, ++implicitContentWidthChanges) + compare(implicitContentHeightSpy.count, ++implicitContentHeightChanges) + compare(implicitBackgroundWidthSpy.count, implicitBackgroundWidthChanges) + compare(implicitBackgroundHeightSpy.count, implicitBackgroundHeightChanges) control.background = rectangle.createObject(control, {implicitWidth: 20, implicitHeight: 30}) compare(control.implicitWidth, 20) compare(control.implicitHeight, 30) + compare(control.implicitContentWidth,11) + compare(control.implicitContentHeight, 21) compare(control.implicitBackgroundWidth, 20) compare(control.implicitBackgroundHeight, 30) compare(implicitWidthSpy.count, ++implicitWidthChanges) compare(implicitHeightSpy.count, ++implicitHeightChanges) + compare(implicitContentWidthSpy.count, implicitContentWidthChanges) + compare(implicitContentHeightSpy.count, implicitContentHeightChanges) compare(implicitBackgroundWidthSpy.count, ++implicitBackgroundWidthChanges) compare(implicitBackgroundHeightSpy.count, ++implicitBackgroundHeightChanges) @@ -1170,10 +1213,14 @@ TestCase { control.background.implicitHeight += 1 compare(control.implicitWidth, 21) compare(control.implicitHeight, 31) + compare(control.implicitContentWidth, 11) + compare(control.implicitContentHeight, 21) compare(control.implicitBackgroundWidth, 21) compare(control.implicitBackgroundHeight, 31) compare(implicitWidthSpy.count, ++implicitWidthChanges) compare(implicitHeightSpy.count, ++implicitHeightChanges) + compare(implicitContentWidthSpy.count, implicitContentWidthChanges) + compare(implicitContentHeightSpy.count, implicitContentHeightChanges) compare(implicitBackgroundWidthSpy.count, ++implicitBackgroundWidthChanges) compare(implicitBackgroundHeightSpy.count, ++implicitBackgroundHeightChanges) } diff --git a/tests/auto/controls/data/tst_frame.qml b/tests/auto/controls/data/tst_frame.qml index c6ecdb43..95838155 100644 --- a/tests/auto/controls/data/tst_frame.qml +++ b/tests/auto/controls/data/tst_frame.qml @@ -106,6 +106,8 @@ TestCase { verify(control.contentItem) compare(control.contentWidth, 0) compare(control.contentHeight, 0) + compare(control.implicitContentWidth, 0) + compare(control.implicitContentHeight, 0) } function test_oneChild() { @@ -114,6 +116,8 @@ TestCase { compare(control.contentWidth, 100) compare(control.contentHeight, 30) + compare(control.implicitContentWidth, 100) + compare(control.implicitContentHeight, 30) verify(control.implicitWidth > 100) verify(control.implicitHeight > 30) } @@ -124,6 +128,8 @@ TestCase { compare(control.contentWidth, 0) compare(control.contentHeight, 0) + compare(control.implicitContentWidth, 0) + compare(control.implicitContentHeight, 0) verify(control.implicitWidth > 0) verify(control.implicitHeight > 0) } @@ -134,6 +140,8 @@ TestCase { compare(control.contentWidth, 100) compare(control.contentHeight, 30) + compare(control.implicitContentWidth, 100) + compare(control.implicitContentHeight, 30) verify(control.implicitWidth > 100) verify(control.implicitHeight > 30) } diff --git a/tests/auto/controls/data/tst_groupbox.qml b/tests/auto/controls/data/tst_groupbox.qml index 28de0479..446283d8 100644 --- a/tests/auto/controls/data/tst_groupbox.qml +++ b/tests/auto/controls/data/tst_groupbox.qml @@ -106,6 +106,8 @@ TestCase { verify(control.contentItem) compare(control.contentWidth, 0) compare(control.contentHeight, 0) + compare(control.implicitContentWidth, 0) + compare(control.implicitContentHeight, 0) } function test_oneChild() { @@ -114,6 +116,8 @@ TestCase { compare(control.contentWidth, 100) compare(control.contentHeight, 30) + compare(control.implicitContentWidth, 100) + compare(control.implicitContentHeight, 30) verify(control.implicitWidth > 100) verify(control.implicitHeight > 30) } @@ -124,6 +128,8 @@ TestCase { compare(control.contentWidth, 0) compare(control.contentHeight, 0) + compare(control.implicitContentWidth, 0) + compare(control.implicitContentHeight, 0) verify(control.implicitWidth > 0) verify(control.implicitHeight > 0) } @@ -134,6 +140,8 @@ TestCase { compare(control.contentWidth, 100) compare(control.contentHeight, 30) + compare(control.implicitContentWidth, 100) + compare(control.implicitContentHeight, 30) verify(control.implicitWidth > 100) verify(control.implicitHeight > 30) } diff --git a/tests/auto/controls/data/tst_page.qml b/tests/auto/controls/data/tst_page.qml index 4fb2d089..5d5a7e8b 100644 --- a/tests/auto/controls/data/tst_page.qml +++ b/tests/auto/controls/data/tst_page.qml @@ -132,6 +132,8 @@ TestCase { verify(control.contentItem) compare(control.contentWidth, 0) compare(control.contentHeight, 0) + compare(control.implicitContentWidth, 0) + compare(control.implicitContentHeight, 0) } function test_oneChild() { @@ -140,6 +142,8 @@ TestCase { compare(control.contentWidth, 100) compare(control.contentHeight, 30) + compare(control.implicitContentWidth, 100) + compare(control.implicitContentHeight, 30) compare(control.implicitWidth, 100 + control.leftPadding + control.rightPadding) compare(control.implicitHeight, 30 + control.topPadding + control.bottomPadding) } @@ -150,6 +154,8 @@ TestCase { compare(control.contentWidth, 0) compare(control.contentHeight, 0) + compare(control.implicitContentWidth, 0) + compare(control.implicitContentHeight, 0) compare(control.implicitWidth, Math.max(control.leftPadding + control.rightPadding, control.background ? control.background.implicitWidth : 0)) compare(control.implicitHeight, Math.max(control.topPadding + control.bottomPadding, @@ -162,6 +168,8 @@ TestCase { compare(control.contentWidth, 100) compare(control.contentHeight, 30) + compare(control.implicitContentWidth, 100) + compare(control.implicitContentHeight, 30) compare(control.implicitWidth, 100 + control.leftPadding + control.rightPadding) compare(control.implicitHeight, 30 + control.topPadding + control.bottomPadding) } diff --git a/tests/auto/controls/data/tst_pane.qml b/tests/auto/controls/data/tst_pane.qml index 019e3916..8976d4f9 100644 --- a/tests/auto/controls/data/tst_pane.qml +++ b/tests/auto/controls/data/tst_pane.qml @@ -119,6 +119,8 @@ TestCase { verify(control.contentItem) compare(control.contentWidth, 0) compare(control.contentHeight, 0) + compare(control.implicitContentWidth, 0) + compare(control.implicitContentHeight, 0) } function test_oneChild() { @@ -127,6 +129,8 @@ TestCase { compare(control.contentWidth, 100) compare(control.contentHeight, 30) + compare(control.implicitContentWidth, 100) + compare(control.implicitContentHeight, 30) verify(control.implicitWidth > 100) verify(control.implicitHeight > 30) @@ -136,6 +140,8 @@ TestCase { compare(control.contentWidth, 200) compare(control.contentHeight, 40) + compare(control.implicitContentWidth, 200) + compare(control.implicitContentHeight, 40) verify(control.implicitWidth > 200) verify(control.implicitHeight > 40) } @@ -146,6 +152,8 @@ TestCase { compare(control.contentWidth, 0) compare(control.contentHeight, 0) + compare(control.implicitContentWidth, 0) + compare(control.implicitContentHeight, 0) verify(control.implicitWidth > 0) verify(control.implicitHeight > 0) } @@ -156,6 +164,8 @@ TestCase { compare(control.contentWidth, 100) compare(control.contentHeight, 30) + compare(control.implicitContentWidth, 100) + compare(control.implicitContentHeight, 30) verify(control.implicitWidth > 100) verify(control.implicitHeight > 30) } diff --git a/tests/auto/controls/data/tst_tabbar.qml b/tests/auto/controls/data/tst_tabbar.qml index adb27f78..58917d84 100644 --- a/tests/auto/controls/data/tst_tabbar.qml +++ b/tests/auto/controls/data/tst_tabbar.qml @@ -514,8 +514,10 @@ TestCase { control.addItem(tab1) tryCompare(tab1, "width", control.width) compare(tab1.height, control.height) - compare(control.contentWidth, tab1.implicitWidth) - compare(control.contentHeight, tab1.implicitHeight) + compare(control.implicitContentWidth, tab1.implicitWidth) + compare(control.implicitContentHeight, tab1.implicitHeight) + compare(control.contentWidth, control.implicitContentWidth) + compare(control.contentHeight, control.implicitContentHeight) compare(control.implicitWidth, control.contentWidth + control.leftPadding + control.rightPadding) compare(control.implicitHeight, control.contentHeight + control.topPadding + control.bottomPadding) @@ -525,8 +527,10 @@ TestCase { compare(tab1.height, control.height) compare(tab2.width, (control.width - data.spacing) / 2) compare(tab2.height, control.height) - compare(control.contentWidth, tab1.implicitWidth + tab2.implicitWidth + data.spacing) - compare(control.contentHeight, tab2.implicitHeight) + compare(control.implicitContentWidth, tab1.implicitWidth + tab2.implicitWidth + data.spacing) + compare(control.implicitContentHeight, tab2.implicitHeight) + compare(control.contentWidth, control.implicitContentWidth) + compare(control.contentHeight, control.implicitContentHeight) compare(control.implicitWidth, control.contentWidth + control.leftPadding + control.rightPadding) compare(control.implicitHeight, control.contentHeight + control.topPadding + control.bottomPadding) @@ -542,8 +546,10 @@ TestCase { compare(tab3.y, (control.height - tab3.height) / 2) compare(tab3.width, 50) compare(tab3.height, tab1.implicitHeight - 10) - compare(control.contentWidth, tab1.implicitWidth + tab2.implicitWidth + tab3.width + 2 * data.spacing) - compare(control.contentHeight, tab2.implicitHeight) + compare(control.implicitContentWidth, tab1.implicitWidth + tab2.implicitWidth + tab3.width + 2 * data.spacing) + compare(control.implicitContentHeight, tab2.implicitHeight) + compare(control.contentWidth, control.implicitContentWidth) + compare(control.contentHeight, control.implicitContentHeight) compare(control.implicitWidth, control.contentWidth + control.leftPadding + control.rightPadding) compare(control.implicitHeight, control.contentHeight + control.topPadding + control.bottomPadding) @@ -556,8 +562,10 @@ TestCase { compare(tab2.height, control.height) compare(tab3.width, expectedWidth) compare(tab3.height, tab3.implicitHeight) - compare(control.contentWidth, tab1.implicitWidth + tab2.implicitWidth + tab3.implicitWidth + 2 * data.spacing) - compare(control.contentHeight, tab2.implicitHeight) + compare(control.implicitContentWidth, tab1.implicitWidth + tab2.implicitWidth + tab3.implicitWidth + 2 * data.spacing) + compare(control.implicitContentHeight, tab2.implicitHeight) + compare(control.contentWidth, control.implicitContentWidth) + compare(control.contentHeight, control.implicitContentHeight) compare(control.implicitWidth, control.contentWidth + control.leftPadding + control.rightPadding) compare(control.implicitHeight, control.contentHeight + control.topPadding + control.bottomPadding) diff --git a/tests/auto/controls/data/tst_toolbar.qml b/tests/auto/controls/data/tst_toolbar.qml index 085c491d..c0f0845c 100644 --- a/tests/auto/controls/data/tst_toolbar.qml +++ b/tests/auto/controls/data/tst_toolbar.qml @@ -106,6 +106,8 @@ TestCase { verify(control.contentItem) compare(control.contentWidth, 0) compare(control.contentHeight, 0) + compare(control.implicitContentWidth, 0) + compare(control.implicitContentHeight, 0) } function test_oneChild() { @@ -114,6 +116,8 @@ TestCase { compare(control.contentWidth, 100) compare(control.contentHeight, 30) + compare(control.implicitContentWidth, 100) + compare(control.implicitContentHeight, 30) verify(control.implicitWidth >= 100) verify(control.implicitHeight >= 30) } @@ -124,6 +128,8 @@ TestCase { compare(control.contentWidth, 0) compare(control.contentHeight, 0) + compare(control.implicitContentWidth, 0) + compare(control.implicitContentHeight, 0) verify(control.implicitWidth >= 0) verify(control.implicitHeight >= 0) } @@ -134,6 +140,8 @@ TestCase { compare(control.contentWidth, 100) compare(control.contentHeight, 30) + compare(control.implicitContentWidth, 100) + compare(control.implicitContentHeight, 30) verify(control.implicitWidth >= 100) verify(control.implicitHeight >= 30) } |