aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick
diff options
context:
space:
mode:
Diffstat (limited to 'src/quick')
-rw-r--r--src/quick/items/qquickitemview.cpp2
-rw-r--r--src/quick/items/qquickpathview.cpp2
-rw-r--r--src/quick/items/qquickrepeater.cpp2
-rw-r--r--src/quick/items/qquickvisualdatamodel.cpp71
-rw-r--r--src/quick/items/qquickvisualdatamodel_p_p.h3
-rw-r--r--src/quick/items/qquickvisualitemmodel.cpp2
-rw-r--r--src/quick/util/qquickpackage.cpp5
7 files changed, 25 insertions, 62 deletions
diff --git a/src/quick/items/qquickitemview.cpp b/src/quick/items/qquickitemview.cpp
index 88a8a30b0c..da661af689 100644
--- a/src/quick/items/qquickitemview.cpp
+++ b/src/quick/items/qquickitemview.cpp
@@ -2181,7 +2181,6 @@ FxViewItem *QQuickItemViewPrivate::createItem(int modelIndex, bool asynchronous)
if (QQuickItem *item = model->item(modelIndex, asynchronous)) {
item->setParentItem(q->contentItem());
- QQml_setParent_noEvent(item, q->contentItem());
requestedIndex = -1;
FxViewItem *viewItem = requestedItem;
if (!viewItem)
@@ -2228,7 +2227,6 @@ void QQuickItemView::initItem(int index, QQuickItem *item)
if (d->requestedAsync)
item->setVisible(false);
item->setParentItem(contentItem());
- QQml_setParent_noEvent(item, contentItem());
d->requestedItem = d->newViewItem(index, item);
}
}
diff --git a/src/quick/items/qquickpathview.cpp b/src/quick/items/qquickpathview.cpp
index fa281cb245..1561dbc00c 100644
--- a/src/quick/items/qquickpathview.cpp
+++ b/src/quick/items/qquickpathview.cpp
@@ -154,7 +154,6 @@ QQuickItem *QQuickPathViewPrivate::getItem(int modelIndex, qreal z, bool onPath)
inRequest = true;
QQuickItem *item = model->item(modelIndex, false);
if (item) {
- QQml_setParent_noEvent(item, q);
item->setParentItem(q);
requestedIndex = -1;
qPathViewAttachedType = attType;
@@ -181,7 +180,6 @@ void QQuickPathView::createdItem(int index, QQuickItem *item)
att->setOnPath(false);
}
item->setParentItem(this);
- QQml_setParent_noEvent(item, this);
d->updateItem(item, index < d->firstIndex ? 0.0 : 1.0);
} else {
d->requestedIndex = -1;
diff --git a/src/quick/items/qquickrepeater.cpp b/src/quick/items/qquickrepeater.cpp
index ec8dc9d231..db58fba00c 100644
--- a/src/quick/items/qquickrepeater.cpp
+++ b/src/quick/items/qquickrepeater.cpp
@@ -386,7 +386,6 @@ void QQuickRepeaterPrivate::createItems()
break;
}
deletables[ii] = item;
- QQml_setParent_noEvent(item, q->parentItem());
item->setParentItem(q->parentItem());
if (ii > 0 && deletables.at(ii-1)) {
item->stackAfter(deletables.at(ii-1));
@@ -415,7 +414,6 @@ void QQuickRepeater::createdItem(int, QQuickItem *)
void QQuickRepeater::initItem(int, QQuickItem *item)
{
- QQml_setParent_noEvent(item, parentItem());
item->setParentItem(parentItem());
}
diff --git a/src/quick/items/qquickvisualdatamodel.cpp b/src/quick/items/qquickvisualdatamodel.cpp
index dfbf3a37ab..4d295b3203 100644
--- a/src/quick/items/qquickvisualdatamodel.cpp
+++ b/src/quick/items/qquickvisualdatamodel.cpp
@@ -194,12 +194,10 @@ QQuickVisualDataModel::~QQuickVisualDataModel()
Q_D(QQuickVisualDataModel);
foreach (QQuickVisualDataModelItem *cacheItem, d->m_cache) {
- if (QObject *object = cacheItem->object()) {
- // Clear the guard before deleting the object so it doesn't decrement scriptRef and
- // potentially delete the cacheItem itself.
- cacheItem->setObject(0);
- delete object;
+ if (cacheItem->object) {
+ delete cacheItem->object;
+ cacheItem->object = 0;
cacheItem->contextData->destroy();
cacheItem->contextData = 0;
cacheItem->scriptRef -= 1;
@@ -517,8 +515,8 @@ void QQuickVisualDataModel::cancel(int index)
d->releaseIncubator(cacheItem->incubationTask);
cacheItem->incubationTask = 0;
}
- if (cacheItem->object() && !cacheItem->isObjectReferenced()) {
- QObject *object = cacheItem->object();
+ if (cacheItem->object && !cacheItem->isObjectReferenced()) {
+ QObject *object = cacheItem->object;
cacheItem->destroyObject();
if (QQuickPackage *package = qmlobject_cast<QQuickPackage *>(object))
d->emitDestroyingPackage(package);
@@ -784,9 +782,9 @@ void QQuickVisualDataModelPrivate::incubatorStatusChanged(QVDMIncubationTask *in
if (status == QQmlIncubator::Ready) {
incubationTask->incubating = 0;
releaseIncubator(incubationTask);
- if (QQuickPackage *package = qmlobject_cast<QQuickPackage *>(cacheItem->object()))
+ if (QQuickPackage *package = qmlobject_cast<QQuickPackage *>(cacheItem->object))
emitCreatedPackage(cacheItem, package);
- else if (QQuickItem *item = qobject_cast<QQuickItem *>(cacheItem->object()))
+ else if (QQuickItem *item = qobject_cast<QQuickItem *>(cacheItem->object))
emitCreatedItem(cacheItem, item);
} else if (status == QQmlIncubator::Error) {
cacheItem->scriptRef -= 1;
@@ -814,11 +812,11 @@ void QVDMIncubationTask::setInitialState(QObject *o)
void QQuickVisualDataModelPrivate::setInitialState(QVDMIncubationTask *incubationTask, QObject *o)
{
QQuickVisualDataModelItem *cacheItem = incubationTask->incubating;
- cacheItem->setObject(o);
+ cacheItem->object = o;
- if (QQuickPackage *package = qmlobject_cast<QQuickPackage *>(cacheItem->object()))
+ if (QQuickPackage *package = qmlobject_cast<QQuickPackage *>(cacheItem->object))
emitInitPackage(cacheItem, package);
- else if (QQuickItem *item = qmlobject_cast<QQuickItem *>(cacheItem->object()))
+ else if (QQuickItem *item = qmlobject_cast<QQuickItem *>(cacheItem->object))
emitInitItem(cacheItem, item);
}
@@ -854,7 +852,7 @@ QObject *QQuickVisualDataModelPrivate::object(Compositor::Group group, int index
// previously requested async - now needed immediately
cacheItem->incubationTask->forceCompletion();
}
- } else if (!cacheItem->object()) {
+ } else if (!cacheItem->object) {
QQmlContext *creationContext = m_delegate->creationContext();
cacheItem->scriptRef += 1;
@@ -886,9 +884,9 @@ QObject *QQuickVisualDataModelPrivate::object(Compositor::Group group, int index
if (index == m_compositor.count(group) - 1 && m_adaptorModel.canFetchMore())
QCoreApplication::postEvent(q, new QEvent(QEvent::UpdateRequest));
- if (cacheItem->object() && reference)
+ if (cacheItem->object && reference)
cacheItem->referenceObject();
- return cacheItem->object();
+ return cacheItem->object;
}
/*
@@ -1157,14 +1155,13 @@ void QQuickVisualDataModelPrivate::itemsRemoved(
} else {
for (; cacheIndex < remove.cacheIndex + remove.count - removedCache; ++cacheIndex) {
QQuickVisualDataModelItem *cacheItem = m_cache.at(cacheIndex);
- if (remove.inGroup(Compositor::Persisted) && cacheItem->objectRef == 0 && cacheItem->object()) {
- QObject *object = cacheItem->object();
+ if (remove.inGroup(Compositor::Persisted) && cacheItem->objectRef == 0 && cacheItem->object) {
+ QObject *object = cacheItem->object;
cacheItem->destroyObject();
if (QQuickPackage *package = qmlobject_cast<QQuickPackage *>(object))
emitDestroyingPackage(package);
else if (QQuickItem *item = qmlobject_cast<QQuickItem *>(object))
emitDestroyingItem(item);
- cacheItem->setObject(0);
cacheItem->scriptRef -= 1;
}
if (!cacheItem->isReferenced()) {
@@ -1321,7 +1318,7 @@ void QQuickVisualDataModelPrivate::emitChanges()
QQuickVisualDataGroupPrivate::get(m_groups[i])->emitModelUpdated(reset);
foreach (QQuickVisualDataModelItem *cacheItem, m_cache) {
- if (cacheItem->object() && cacheItem->attached)
+ if (cacheItem->attached)
cacheItem->attached->emitChanges();
}
}
@@ -1406,7 +1403,7 @@ void QQuickVisualDataModel::_q_layoutChanged()
QQuickVisualDataModelAttached *QQuickVisualDataModel::qmlAttachedProperties(QObject *obj)
{
if (QQuickVisualDataModelItem *cacheItem = QQuickVisualDataModelItem::dataForObject(obj)) {
- if (cacheItem->object() == obj) { // Don't create attached item for child objects.
+ if (cacheItem->object == obj) { // Don't create attached item for child objects.
cacheItem->attached = new QQuickVisualDataModelAttached(cacheItem, obj);
return cacheItem->attached;
}
@@ -1678,6 +1675,7 @@ QQuickVisualDataModelItem::QQuickVisualDataModelItem(
: QV8ObjectResource(metaType->v8Engine)
, metaType(metaType)
, contextData(0)
+ , object(0)
, attached(0)
, incubationTask(0)
, objectRef(0)
@@ -1692,7 +1690,7 @@ QQuickVisualDataModelItem::~QQuickVisualDataModelItem()
{
Q_ASSERT(scriptRef == 0);
Q_ASSERT(objectRef == 0);
- Q_ASSERT(!object());
+ Q_ASSERT(!object);
Q_ASSERT(indexHandle.IsEmpty());
Q_ASSERT(modelHandle.IsEmpty());
@@ -1749,18 +1747,15 @@ void QQuickVisualDataModelItem::incubateObject(
void QQuickVisualDataModelItem::destroyObject()
{
- QObject * const obj = object();
- setObject(0);
-
- Q_ASSERT(obj);
+ Q_ASSERT(object);
Q_ASSERT(contextData);
- QObjectPrivate *p = QObjectPrivate::get(obj);
+ QObjectPrivate *p = QObjectPrivate::get(object);
Q_ASSERT(p->declarativeData);
QQmlData *data = static_cast<QQmlData*>(p->declarativeData);
if (data->ownContext && data->context)
data->context->clearContext();
- obj->deleteLater();
+ object->deleteLater();
if (attached) {
attached->m_cacheItem = 0;
@@ -1769,6 +1764,7 @@ void QQuickVisualDataModelItem::destroyObject()
contextData->destroy();
contextData = 0;
+ object = 0;
}
QQuickVisualDataModelItem *QQuickVisualDataModelItem::dataForObject(QObject *object)
@@ -1786,25 +1782,6 @@ QQuickVisualDataModelItem *QQuickVisualDataModelItem::dataForObject(QObject *obj
return 0;
}
-void QQuickVisualDataModelItem::objectDestroyed(QObject *)
-{
- const bool contextValid = contextData->isValid();
- contextData->destroy();
- contextData = 0;
- attached = 0;
- objectRef = 0;
-
- if (contextValid) {
- Dispose();
- } else {
- // The parent context was invalidated, meaning the visual data model is about to be
- // destroyed. So we'll just decrement the script ref here and let the vdm destructor
- // destroy the object if necessary, rather than Dispose of the object and unnecessarily
- // remove each item from the soon to be destroyed cache list individually.
- scriptRef -= 1;
- }
-}
-
//---------------------------------------------------------------------------
QQuickVisualDataModelAttachedMetaObject::QQuickVisualDataModelAttachedMetaObject(
@@ -2841,7 +2818,6 @@ QQuickVisualModel::ReleaseFlags QQuickVisualPartsModel::release(QQuickItem *item
QHash<QObject *, QQuickPackage *>::iterator it = m_packaged.find(item);
if (it != m_packaged.end()) {
QQuickPackage *package = *it;
- QQml_setParent_noEvent(item, package);
QQuickVisualDataModelPrivate *model = QQuickVisualDataModelPrivate::get(m_model);
flags = model->release(package);
m_packaged.erase(it);
@@ -2893,7 +2869,6 @@ void QQuickVisualPartsModel::destroyingPackage(QQuickPackage *package)
Q_ASSERT(!m_packaged.contains(item));
emit destroyingItem(item);
item->setParentItem(0);
- QQml_setParent_noEvent(item, package);
}
}
diff --git a/src/quick/items/qquickvisualdatamodel_p_p.h b/src/quick/items/qquickvisualdatamodel_p_p.h
index e2887e73f7..ad5aa5ed62 100644
--- a/src/quick/items/qquickvisualdatamodel_p_p.h
+++ b/src/quick/items/qquickvisualdatamodel_p_p.h
@@ -103,7 +103,7 @@ public:
class QQuickVisualAdaptorModel;
class QVDMIncubationTask;
-class QQuickVisualDataModelItem : public QObject, public QV8ObjectResource, public QQmlGuard<QObject>
+class QQuickVisualDataModelItem : public QObject, public QV8ObjectResource
{
Q_OBJECT
Q_PROPERTY(int index READ modelIndex NOTIFY modelIndexChanged)
@@ -146,6 +146,7 @@ public:
QQuickVisualDataModelItemMetaType * const metaType;
QQmlContextData *contextData;
+ QObject *object;
QQuickVisualDataModelAttached *attached;
QVDMIncubationTask *incubationTask;
v8::Persistent<v8::Object> indexHandle;
diff --git a/src/quick/items/qquickvisualitemmodel.cpp b/src/quick/items/qquickvisualitemmodel.cpp
index df274e1d42..1cefcb4ce9 100644
--- a/src/quick/items/qquickvisualitemmodel.cpp
+++ b/src/quick/items/qquickvisualitemmodel.cpp
@@ -65,7 +65,6 @@ public:
QQuickVisualItemModelPrivate() : QObjectPrivate() {}
static void children_append(QQmlListProperty<QQuickItem> *prop, QQuickItem *item) {
- QQml_setParent_noEvent(item, prop->object);
static_cast<QQuickVisualItemModelPrivate *>(prop->data)->children.append(Item(item));
static_cast<QQuickVisualItemModelPrivate *>(prop->data)->itemAppended();
static_cast<QQuickVisualItemModelPrivate *>(prop->data)->emitChildrenChanged();
@@ -206,7 +205,6 @@ QQuickVisualModel::ReleaseFlags QQuickVisualItemModel::release(QQuickItem *item)
if (d->children[idx].deref()) {
// XXX todo - the original did item->scene()->removeItem(). Why?
item->setParentItem(0);
- QQml_setParent_noEvent(item, this);
}
}
return 0;
diff --git a/src/quick/util/qquickpackage.cpp b/src/quick/util/qquickpackage.cpp
index 94e4fe5428..6c95989ba7 100644
--- a/src/quick/util/qquickpackage.cpp
+++ b/src/quick/util/qquickpackage.cpp
@@ -145,11 +145,6 @@ QQuickPackage::QQuickPackage(QObject *parent)
QQuickPackage::~QQuickPackage()
{
- Q_D(QQuickPackage);
- for (int ii = 0; ii < d->dataList.count(); ++ii) {
- QObject *obj = d->dataList.at(ii);
- obj->setParent(this);
- }
}
QQmlListProperty<QObject> QQuickPackage::data()