aboutsummaryrefslogtreecommitdiffstats
path: root/src/quicktemplates2
diff options
context:
space:
mode:
Diffstat (limited to 'src/quicktemplates2')
-rw-r--r--src/quicktemplates2/qquickcontrol.cpp39
-rw-r--r--src/quicktemplates2/qquickcontrol_p_p.h1
-rw-r--r--src/quicktemplates2/qquickscrollview.cpp14
3 files changed, 33 insertions, 21 deletions
diff --git a/src/quicktemplates2/qquickcontrol.cpp b/src/quicktemplates2/qquickcontrol.cpp
index fc0b1b17..d285fdd2 100644
--- a/src/quicktemplates2/qquickcontrol.cpp
+++ b/src/quicktemplates2/qquickcontrol.cpp
@@ -281,6 +281,27 @@ QQuickItem *QQuickControlPrivate::getContentItem()
return contentItem;
}
+void QQuickControlPrivate::setContentItem_helper(QQuickItem *item, bool notify)
+{
+ Q_Q(QQuickControl);
+ if (contentItem == item)
+ return;
+
+ q->contentItemChange(item, contentItem);
+ destroyDelegate(contentItem, q);
+ contentItem = item;
+
+ if (item) {
+ if (!item->parentItem())
+ item->setParentItem(q);
+ if (componentComplete)
+ resizeContent();
+ }
+
+ if (notify)
+ emit q->contentItemChanged();
+}
+
#if QT_CONFIG(accessibility)
void QQuickControlPrivate::accessibilityActiveChanged(bool active)
{
@@ -1176,25 +1197,15 @@ void QQuickControl::setBackground(QQuickItem *background)
QQuickItem *QQuickControl::contentItem() const
{
QQuickControlPrivate *d = const_cast<QQuickControlPrivate *>(d_func());
- return d->getContentItem();
+ if (!d->contentItem)
+ d->setContentItem_helper(d->getContentItem(), false);
+ return d->contentItem;
}
void QQuickControl::setContentItem(QQuickItem *item)
{
Q_D(QQuickControl);
- if (d->contentItem == item)
- return;
-
- contentItemChange(item, d->contentItem);
- QQuickControlPrivate::destroyDelegate(d->contentItem, this);
- d->contentItem = item;
- if (item) {
- if (!item->parentItem())
- item->setParentItem(this);
- if (isComponentComplete())
- d->resizeContent();
- }
- emit contentItemChanged();
+ d->setContentItem_helper(item, true);
}
void QQuickControl::classBegin()
diff --git a/src/quicktemplates2/qquickcontrol_p_p.h b/src/quicktemplates2/qquickcontrol_p_p.h
index 3cd04b17..7ff9dff3 100644
--- a/src/quicktemplates2/qquickcontrol_p_p.h
+++ b/src/quicktemplates2/qquickcontrol_p_p.h
@@ -95,6 +95,7 @@ public:
virtual void resizeContent();
virtual QQuickItem *getContentItem();
+ void setContentItem_helper(QQuickItem *item, bool notify = true);
#if QT_CONFIG(accessibility)
void accessibilityActiveChanged(bool active) override;
diff --git a/src/quicktemplates2/qquickscrollview.cpp b/src/quicktemplates2/qquickscrollview.cpp
index fc763511..c05e4848 100644
--- a/src/quicktemplates2/qquickscrollview.cpp
+++ b/src/quicktemplates2/qquickscrollview.cpp
@@ -108,7 +108,7 @@ public:
QQuickItem *getContentItem() override;
- QQuickFlickable *ensureFlickable();
+ QQuickFlickable *ensureFlickable(bool content);
bool setFlickable(QQuickFlickable *flickable, bool content);
void updateContentWidth();
@@ -146,14 +146,14 @@ QQuickScrollViewPrivate::QQuickScrollViewPrivate()
QQuickItem *QQuickScrollViewPrivate::getContentItem()
{
- return ensureFlickable();
+ return ensureFlickable(false);
}
-QQuickFlickable *QQuickScrollViewPrivate::ensureFlickable()
+QQuickFlickable *QQuickScrollViewPrivate::ensureFlickable(bool content)
{
Q_Q(QQuickScrollView);
if (!flickable)
- setFlickable(new QQuickFlickable(q), true);
+ setFlickable(new QQuickFlickable(q), content);
return flickable;
}
@@ -271,7 +271,7 @@ void QQuickScrollViewPrivate::contentData_append(QQmlListProperty<QObject> *prop
if (!p->flickable && p->setFlickable(qobject_cast<QQuickFlickable *>(obj), true))
return;
- QQuickFlickable *flickable = p->ensureFlickable();
+ QQuickFlickable *flickable = p->ensureFlickable(true);
Q_ASSERT(flickable);
QQmlListProperty<QObject> data = flickable->flickableData();
data.append(&data, obj);
@@ -313,7 +313,7 @@ void QQuickScrollViewPrivate::contentChildren_append(QQmlListProperty<QQuickItem
if (!p->flickable)
p->setFlickable(qobject_cast<QQuickFlickable *>(item), true);
- QQuickFlickable *flickable = p->ensureFlickable();
+ QQuickFlickable *flickable = p->ensureFlickable(true);
Q_ASSERT(flickable);
QQmlListProperty<QQuickItem> children = flickable->flickableChildren();
children.append(&children, item);
@@ -552,7 +552,7 @@ void QQuickScrollView::componentComplete()
Q_D(QQuickScrollView);
QQuickControl::componentComplete();
if (!d->contentItem)
- d->ensureFlickable();
+ d->ensureFlickable(true);
}
void QQuickScrollView::contentItemChange(QQuickItem *newItem, QQuickItem *oldItem)