aboutsummaryrefslogtreecommitdiffstats
path: root/src/imports
diff options
context:
space:
mode:
Diffstat (limited to 'src/imports')
-rw-r--r--src/imports/layouts/qquicklayout.cpp6
-rw-r--r--src/imports/layouts/qquicklayout_p.h1
-rw-r--r--src/imports/layouts/qquicklinearlayout.cpp2
-rw-r--r--src/imports/layouts/qquickstacklayout.cpp7
4 files changed, 14 insertions, 2 deletions
diff --git a/src/imports/layouts/qquicklayout.cpp b/src/imports/layouts/qquicklayout.cpp
index eb61eb687f..7d51ec3ca9 100644
--- a/src/imports/layouts/qquicklayout.cpp
+++ b/src/imports/layouts/qquicklayout.cpp
@@ -769,6 +769,12 @@ bool QQuickLayout::shouldIgnoreItem(QQuickItem *child, QQuickLayoutAttached *&in
return ignoreItem;
}
+void QQuickLayout::checkAnchors(QQuickItem *item) const
+{
+ if (QQuickItemPrivate::get(item)->_anchors)
+ qmlWarning(item) << "Detected anchors on an item that is part of a layout. This is undefined behavior.";
+}
+
void QQuickLayout::itemChange(ItemChange change, const ItemChangeData &value)
{
if (change == ItemChildAddedChange) {
diff --git a/src/imports/layouts/qquicklayout_p.h b/src/imports/layouts/qquicklayout_p.h
index 1e9984e337..b31bffa290 100644
--- a/src/imports/layouts/qquicklayout_p.h
+++ b/src/imports/layouts/qquicklayout_p.h
@@ -91,6 +91,7 @@ public:
static void effectiveSizeHints_helper(QQuickItem *item, QSizeF *cachedSizeHints, QQuickLayoutAttached **info, bool useFallbackToWidthOrHeight);
static QLayoutPolicy::Policy effectiveSizePolicy_helper(QQuickItem *item, Qt::Orientation orientation, QQuickLayoutAttached *info);
bool shouldIgnoreItem(QQuickItem *child, QQuickLayoutAttached *&info, QSizeF *sizeHints) const;
+ void checkAnchors(QQuickItem *item) const;
void itemChange(ItemChange change, const ItemChangeData &value) override;
void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) override;
diff --git a/src/imports/layouts/qquicklinearlayout.cpp b/src/imports/layouts/qquicklinearlayout.cpp
index 4410723f3d..db983e06ba 100644
--- a/src/imports/layouts/qquicklinearlayout.cpp
+++ b/src/imports/layouts/qquicklinearlayout.cpp
@@ -652,6 +652,7 @@ void QQuickGridLayout::insertLayoutItems()
QSizeF sizeHints[Qt::NSizeHints];
const auto items = childItems();
for (QQuickItem *child : items) {
+ checkAnchors(child);
QQuickLayoutAttached *info = 0;
// Will skip all items with effective maximum width/height == 0
@@ -826,6 +827,7 @@ void QQuickLinearLayout::insertLayoutItems()
const auto items = childItems();
for (QQuickItem *child : items) {
Q_ASSERT(child);
+ checkAnchors(child);
QQuickLayoutAttached *info = 0;
// Will skip all items with effective maximum width/height == 0
diff --git a/src/imports/layouts/qquickstacklayout.cpp b/src/imports/layouts/qquickstacklayout.cpp
index 9a7ec71473..cf70856e14 100644
--- a/src/imports/layouts/qquickstacklayout.cpp
+++ b/src/imports/layouts/qquickstacklayout.cpp
@@ -288,8 +288,11 @@ void QQuickStackLayout::updateLayoutItems()
d->count = count;
emit countChanged();
}
- for (int i = 0; i < count; ++i)
- itemAt(i)->setVisible(d->currentIndex == i);
+ for (int i = 0; i < count; ++i) {
+ QQuickItem *child = itemAt(i);
+ checkAnchors(child);
+ child->setVisible(d->currentIndex == i);
+ }
invalidate();
}