aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/items/qquickitem.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/quick/items/qquickitem.cpp')
-rw-r--r--src/quick/items/qquickitem.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/quick/items/qquickitem.cpp b/src/quick/items/qquickitem.cpp
index af60ab879b..54cb8be5da 100644
--- a/src/quick/items/qquickitem.cpp
+++ b/src/quick/items/qquickitem.cpp
@@ -2375,9 +2375,8 @@ QQuickItem::~QQuickItem()
else if (d->window)
d->derefWindow();
- // XXX todo - optimize
while (!d->childItems.isEmpty())
- d->childItems.constFirst()->setParentItem(0);
+ d->childItems.constLast()->setParentItem(0);
if (!d->changeListeners.isEmpty()) {
const auto listeners = d->changeListeners; // NOTE: intentional copy (QTBUG-54732)
@@ -2953,7 +2952,8 @@ void QQuickItemPrivate::removeChild(QQuickItem *child)
Q_ASSERT(child);
Q_ASSERT(childItems.contains(child));
- childItems.removeOne(child);
+ int idx = childItems.lastIndexOf(child);
+ childItems.removeAt(idx);
Q_ASSERT(!childItems.contains(child));
QQuickItemPrivate *childPrivate = QQuickItemPrivate::get(child);