aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/quicktemplates2/qquickcontainer.cpp67
-rw-r--r--src/quicktemplates2/qquickcontainer_p_p.h6
-rw-r--r--src/quicktemplates2/qquickcontrol.cpp134
-rw-r--r--src/quicktemplates2/qquickcontrol_p.h7
-rw-r--r--src/quicktemplates2/qquickcontrol_p_p.h9
-rw-r--r--src/quicktemplates2/qquickdialogbuttonbox.cpp8
-rw-r--r--src/quicktemplates2/qquickmenubar.cpp8
-rw-r--r--src/quicktemplates2/qquickpane.cpp96
-rw-r--r--src/quicktemplates2/qquickpane_p_p.h8
-rw-r--r--src/quicktemplates2/qquickscrollview.cpp23
-rw-r--r--src/quicktemplates2/qquickswipeview.cpp6
-rw-r--r--src/quicktemplates2/qquicktabbar.cpp10
-rw-r--r--tests/auto/controls/data/tst_control.qml47
-rw-r--r--tests/auto/controls/data/tst_frame.qml8
-rw-r--r--tests/auto/controls/data/tst_groupbox.qml8
-rw-r--r--tests/auto/controls/data/tst_page.qml8
-rw-r--r--tests/auto/controls/data/tst_pane.qml10
-rw-r--r--tests/auto/controls/data/tst_tabbar.qml24
-rw-r--r--tests/auto/controls/data/tst_toolbar.qml8
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)
}