diff options
-rw-r--r-- | src/qml/types/qqmldelegatemodel.cpp | 146 | ||||
-rw-r--r-- | src/qml/types/qqmldelegatemodel_p_p.h | 22 | ||||
-rw-r--r-- | src/qml/types/qqmlinstantiator.cpp | 4 | ||||
-rw-r--r-- | src/qml/util/qqmladaptormodel.cpp | 26 | ||||
-rw-r--r-- | src/qml/util/qqmlchangeset.cpp | 112 | ||||
-rw-r--r-- | src/qml/util/qqmlchangeset_p.h | 35 | ||||
-rw-r--r-- | src/qml/util/qqmllistcompositor.cpp | 44 | ||||
-rw-r--r-- | src/qml/util/qqmllistcompositor_p.h | 10 | ||||
-rw-r--r-- | src/quick/items/qquickgridview.cpp | 4 | ||||
-rw-r--r-- | src/quick/items/qquickitemview.cpp | 16 | ||||
-rw-r--r-- | src/quick/items/qquickitemview_p_p.h | 8 | ||||
-rw-r--r-- | src/quick/items/qquicklistview.cpp | 4 | ||||
-rw-r--r-- | src/quick/items/qquickpathview.cpp | 4 | ||||
-rw-r--r-- | src/quick/items/qquickrepeater.cpp | 4 | ||||
-rw-r--r-- | tests/auto/qml/qqmlchangeset/tst_qqmlchangeset.cpp | 36 |
15 files changed, 201 insertions, 274 deletions
diff --git a/src/qml/types/qqmldelegatemodel.cpp b/src/qml/types/qqmldelegatemodel.cpp index f7ce1c8fad..d8a1c0f982 100644 --- a/src/qml/types/qqmldelegatemodel.cpp +++ b/src/qml/types/qqmldelegatemodel.cpp @@ -61,16 +61,22 @@ class QQmlDelegateModelItem; struct DelegateModelGroupFunction: QV4::FunctionObject { - V4_OBJECT + struct Data : QV4::FunctionObject::Data { + uint flag; + QV4::ReturnedValue (*code)(QQmlDelegateModelItem *item, uint flag, const QV4::ValueRef arg); + }; + struct { + uint flag; + QV4::ReturnedValue (*code)(QQmlDelegateModelItem *item, uint flag, const QV4::ValueRef arg); + } __data; - QV4::ReturnedValue (*code)(QQmlDelegateModelItem *item, uint flag, const QV4::ValueRef arg); - uint flag; + V4_OBJECT_NEW DelegateModelGroupFunction(QV4::ExecutionContext *scope, uint flag, QV4::ReturnedValue (*code)(QQmlDelegateModelItem *item, uint flag, const QV4::ValueRef arg)) : FunctionObject(scope, QStringLiteral("DelegateModelGroupFunction")) - , code(code) - , flag(flag) { + d()->flag = flag; + d()->code = code; setVTable(staticVTable()); } @@ -89,7 +95,7 @@ struct DelegateModelGroupFunction: QV4::FunctionObject return v4->currentContext()->throwTypeError(QStringLiteral("Not a valid VisualData object")); QV4::ScopedValue v(scope, callData->argument(0)); - return f->code(o->item, f->flag, v); + return f->d()->code(o->d()->item, f->d()->flag, v); } }; @@ -103,8 +109,7 @@ public: QQmlDelegateModelEngineData(QV8Engine *engine); ~QQmlDelegateModelEngineData(); - QV4::ReturnedValue array(QV8Engine *engine, const QVector<QQmlChangeSet::Remove> &changes); - QV4::ReturnedValue array(QV8Engine *engine, const QVector<QQmlChangeSet::Insert> &changes); + QV4::ReturnedValue array(QV8Engine *engine, const QVector<QQmlChangeSet::Change> &changes); QV4::PersistentValue changeProto; }; @@ -722,8 +727,8 @@ void QQmlDelegateModelPrivate::updateFilterGroup() QQmlDelegateModelGroupPrivate::get(m_groups[m_compositorGroup])->emitters.insert(this); if (m_compositorGroup != previousGroup) { - QVector<QQmlChangeSet::Remove> removes; - QVector<QQmlChangeSet::Insert> inserts; + QVector<QQmlChangeSet::Change> removes; + QVector<QQmlChangeSet::Change> inserts; m_compositor.transition(previousGroup, m_compositorGroup, &removes, &inserts); QQmlChangeSet changeSet; @@ -1143,7 +1148,7 @@ static void incrementIndexes(QQmlDelegateModelItem *cacheItem, int count, const void QQmlDelegateModelPrivate::itemsInserted( const QVector<Compositor::Insert> &inserts, - QVarLengthArray<QVector<QQmlChangeSet::Insert>, Compositor::MaximumGroupCount> *translatedInserts, + QVarLengthArray<QVector<QQmlChangeSet::Change>, Compositor::MaximumGroupCount> *translatedInserts, QHash<int, QList<QQmlDelegateModelItem *> > *movedItems) { int cacheIndex = 0; @@ -1159,7 +1164,7 @@ void QQmlDelegateModelPrivate::itemsInserted( for (int i = 1; i < m_groupCount; ++i) { if (insert.inGroup(i)) { (*translatedInserts)[i].append( - QQmlChangeSet::Insert(insert.index[i], insert.count, insert.moveId)); + QQmlChangeSet::Change(insert.index[i], insert.count, insert.moveId)); inserted[i] += insert.count; } } @@ -1200,7 +1205,7 @@ void QQmlDelegateModelPrivate::itemsInserted( void QQmlDelegateModelPrivate::itemsInserted(const QVector<Compositor::Insert> &inserts) { - QVarLengthArray<QVector<QQmlChangeSet::Insert>, Compositor::MaximumGroupCount> translatedInserts(m_groupCount); + QVarLengthArray<QVector<QQmlChangeSet::Change>, Compositor::MaximumGroupCount> translatedInserts(m_groupCount); itemsInserted(inserts, &translatedInserts); Q_ASSERT(m_cache.count() == m_compositor.count(Compositor::Cache)); if (!m_delegate) @@ -1234,7 +1239,7 @@ void QQmlDelegateModel::_q_itemsInserted(int index, int count) void QQmlDelegateModelPrivate::itemsRemoved( const QVector<Compositor::Remove> &removes, - QVarLengthArray<QVector<QQmlChangeSet::Remove>, Compositor::MaximumGroupCount> *translatedRemoves, + QVarLengthArray<QVector<QQmlChangeSet::Change>, Compositor::MaximumGroupCount> *translatedRemoves, QHash<int, QList<QQmlDelegateModelItem *> > *movedItems) { int cacheIndex = 0; @@ -1251,7 +1256,7 @@ void QQmlDelegateModelPrivate::itemsRemoved( for (int i = 1; i < m_groupCount; ++i) { if (remove.inGroup(i)) { (*translatedRemoves)[i].append( - QQmlChangeSet::Remove(remove.index[i], remove.count, remove.moveId)); + QQmlChangeSet::Change(remove.index[i], remove.count, remove.moveId)); removed[i] -= remove.count; } } @@ -1318,7 +1323,7 @@ void QQmlDelegateModelPrivate::itemsRemoved( void QQmlDelegateModelPrivate::itemsRemoved(const QVector<Compositor::Remove> &removes) { - QVarLengthArray<QVector<QQmlChangeSet::Remove>, Compositor::MaximumGroupCount> translatedRemoves(m_groupCount); + QVarLengthArray<QVector<QQmlChangeSet::Change>, Compositor::MaximumGroupCount> translatedRemoves(m_groupCount); itemsRemoved(removes, &translatedRemoves); Q_ASSERT(m_cache.count() == m_compositor.count(Compositor::Cache)); if (!m_delegate) @@ -1356,10 +1361,10 @@ void QQmlDelegateModelPrivate::itemsMoved( { QHash<int, QList<QQmlDelegateModelItem *> > movedItems; - QVarLengthArray<QVector<QQmlChangeSet::Remove>, Compositor::MaximumGroupCount> translatedRemoves(m_groupCount); + QVarLengthArray<QVector<QQmlChangeSet::Change>, Compositor::MaximumGroupCount> translatedRemoves(m_groupCount); itemsRemoved(removes, &translatedRemoves, &movedItems); - QVarLengthArray<QVector<QQmlChangeSet::Insert>, Compositor::MaximumGroupCount> translatedInserts(m_groupCount); + QVarLengthArray<QVector<QQmlChangeSet::Change>, Compositor::MaximumGroupCount> translatedInserts(m_groupCount); itemsInserted(inserts, &translatedInserts, &movedItems); Q_ASSERT(m_cache.count() == m_compositor.count(Compositor::Cache)); Q_ASSERT(movedItems.isEmpty()); @@ -1774,10 +1779,10 @@ QV4::ReturnedValue QQmlDelegateModelItem::get_model(QV4::CallContext *ctx) QV4::Scoped<QQmlDelegateModelItemObject> o(scope, ctx->callData->thisObject.as<QQmlDelegateModelItemObject>()); if (!o) return ctx->throwTypeError(QStringLiteral("Not a valid VisualData object")); - if (!o->item->metaType->model) + if (!o->d()->item->metaType->model) return QV4::Encode::undefined(); - return o->item->get(); + return o->d()->item->get(); } QV4::ReturnedValue QQmlDelegateModelItem::get_groups(QV4::CallContext *ctx) @@ -1788,9 +1793,9 @@ QV4::ReturnedValue QQmlDelegateModelItem::get_groups(QV4::CallContext *ctx) return ctx->throwTypeError(QStringLiteral("Not a valid VisualData object")); QStringList groups; - for (int i = 1; i < o->item->metaType->groupCount; ++i) { - if (o->item->groups & (1 << i)) - groups.append(o->item->metaType->groupNames.at(i - 1)); + for (int i = 1; i < o->d()->item->metaType->groupCount; ++i) { + if (o->d()->item->groups & (1 << i)) + groups.append(o->d()->item->metaType->groupNames.at(i - 1)); } return ctx->engine->v8Engine->fromVariant(groups); @@ -1805,12 +1810,12 @@ QV4::ReturnedValue QQmlDelegateModelItem::set_groups(QV4::CallContext *ctx) if (!ctx->callData->argc) return ctx->throwTypeError(); - if (!o->item->metaType->model) + if (!o->d()->item->metaType->model) return QV4::Encode::undefined(); - QQmlDelegateModelPrivate *model = QQmlDelegateModelPrivate::get(o->item->metaType->model); + QQmlDelegateModelPrivate *model = QQmlDelegateModelPrivate::get(o->d()->item->metaType->model); const int groupFlags = model->m_cacheMetaType->parseGroups(ctx->callData->args[0]); - const int cacheIndex = model->m_cache.indexOf(o->item); + const int cacheIndex = model->m_cache.indexOf(o->d()->item); Compositor::iterator it = model->m_compositor.find(Compositor::Cache, cacheIndex); model->setGroups(it, 1, Compositor::Cache, groupFlags); return QV4::Encode::undefined(); @@ -1854,7 +1859,7 @@ DEFINE_OBJECT_VTABLE(QQmlDelegateModelItemObject); QQmlDelegateModelItemObject::~QQmlDelegateModelItemObject() { - item->Dispose(); + d()->item->Dispose(); } void QQmlDelegateModelItemObject::destroy(Managed *that) @@ -2484,7 +2489,7 @@ bool QQmlDelegateModelGroupPrivate::parseIndex(const QV4::ValueRef value, int *i QV4::Scoped<QQmlDelegateModelItemObject> object(scope, value); if (object) { - QQmlDelegateModelItem * const cacheItem = object->item; + QQmlDelegateModelItem * const cacheItem = object->d()->item; if (QQmlDelegateModelPrivate *model = cacheItem->metaType->model ? QQmlDelegateModelPrivate::get(cacheItem->metaType->model) : 0) { @@ -3061,8 +3066,8 @@ void QQmlPartsModel::updateFilterGroup() QQmlDelegateModelGroupPrivate::get(model->m_groups[m_compositorGroup])->emitters.insert(this); if (m_compositorGroup != previousGroup) { - QVector<QQmlChangeSet::Remove> removes; - QVector<QQmlChangeSet::Insert> inserts; + QVector<QQmlChangeSet::Change> removes; + QVector<QQmlChangeSet::Change> inserts; model->m_compositor.transition(previousGroup, m_compositorGroup, &removes, &inserts); QQmlChangeSet changeSet; @@ -3203,7 +3208,14 @@ void QQmlPartsModel::emitModelUpdated(const QQmlChangeSet &changeSet, bool reset struct QQmlDelegateModelGroupChange : QV4::Object { - V4_OBJECT + struct Data : QV4::Object::Data { + QQmlChangeSet::Change change; + }; + struct { + QQmlChangeSet::Change change; + } __data; + + V4_OBJECT_NEW QQmlDelegateModelGroupChange(QV4::ExecutionEngine *engine) : Object(engine) { @@ -3215,47 +3227,53 @@ struct QQmlDelegateModelGroupChange : QV4::Object QV4::Scoped<QQmlDelegateModelGroupChange> that(scope, ctx->callData->thisObject.as<QQmlDelegateModelGroupChange>()); if (!that) return ctx->throwTypeError(); - return QV4::Encode(that->change.index); + return QV4::Encode(that->d()->change.index); } static QV4::ReturnedValue method_get_count(QV4::CallContext *ctx) { QV4::Scope scope(ctx); QV4::Scoped<QQmlDelegateModelGroupChange> that(scope, ctx->callData->thisObject.as<QQmlDelegateModelGroupChange>()); if (!that) return ctx->throwTypeError(); - return QV4::Encode(that->change.count); + return QV4::Encode(that->d()->change.count); } static QV4::ReturnedValue method_get_moveId(QV4::CallContext *ctx) { QV4::Scope scope(ctx); QV4::Scoped<QQmlDelegateModelGroupChange> that(scope, ctx->callData->thisObject.as<QQmlDelegateModelGroupChange>()); if (!that) return ctx->throwTypeError(); - if (that->change.moveId < 0) + if (that->d()->change.moveId < 0) return QV4::Encode::undefined(); - return QV4::Encode(that->change.moveId); + return QV4::Encode(that->d()->change.moveId); } - - QQmlChangeSet::Change change; }; DEFINE_OBJECT_VTABLE(QQmlDelegateModelGroupChange); class QQmlDelegateModelGroupChangeArray : public QV4::Object { - V4_OBJECT + struct Data : QV4::Object::Data { + QVector<QQmlChangeSet::Change> changes; + }; + struct { + QVector<QQmlChangeSet::Change> changes; + } __data; + V4_OBJECT_NEW public: - QQmlDelegateModelGroupChangeArray(QV4::ExecutionEngine *engine) + QQmlDelegateModelGroupChangeArray(QV4::ExecutionEngine *engine, const QVector<QQmlChangeSet::Change> &changes) : Object(engine) { + d()->changes = changes; + setVTable(staticVTable()); QV4::Scope scope(engine); QV4::ScopedObject protectThis(scope, this); Q_UNUSED(protectThis); setArrayType(QV4::ArrayData::Custom); } - virtual ~QQmlDelegateModelGroupChangeArray() {} + ~QQmlDelegateModelGroupChangeArray() {} - virtual quint32 count() const = 0; - virtual const QQmlChangeSet::Change &at(int index) const = 0; + quint32 count() const { return d()->changes.count(); } + const QQmlChangeSet::Change &at(int index) const { return d()->changes.at(index); } static QV4::ReturnedValue getIndexed(QV4::Managed *m, uint index, bool *hasProperty) { @@ -3276,7 +3294,7 @@ public: QV4::ScopedObject changeProto(scope, engineData(v4->v8Engine)->changeProto.value()); QV4::Scoped<QQmlDelegateModelGroupChange> object(scope, new (v4->memoryManager) QQmlDelegateModelGroupChange(v4)); object->setPrototype(changeProto.getPointer()); - object->change = change; + object->d()->change = change; if (hasProperty) *hasProperty = true; @@ -3307,38 +3325,6 @@ public: DEFINE_OBJECT_VTABLE(QQmlDelegateModelGroupChangeArray); -class QQmlDelegateModelGroupRemoveArray : public QQmlDelegateModelGroupChangeArray -{ -public: - QQmlDelegateModelGroupRemoveArray(QV4::ExecutionEngine *engine, const QVector<QQmlChangeSet::Remove> &changes) - : QQmlDelegateModelGroupChangeArray(engine) - , changes(changes) - { - } - - quint32 count() const { return changes.count(); } - const QQmlChangeSet::Change &at(int index) const { return changes.at(index); } - -private: - QVector<QQmlChangeSet::Remove> changes; -}; - -class QQmlDelegateModelGroupInsertArray : public QQmlDelegateModelGroupChangeArray -{ -public: - QQmlDelegateModelGroupInsertArray(QV4::ExecutionEngine *engine, const QVector<QQmlChangeSet::Insert> &changes) - : QQmlDelegateModelGroupChangeArray(engine) - , changes(changes) - { - } - - quint32 count() const { return changes.count(); } - const QQmlChangeSet::Change &at(int index) const { return changes.at(index); } - -private: - QVector<QQmlChangeSet::Insert> changes; -}; - QQmlDelegateModelEngineData::QQmlDelegateModelEngineData(QV8Engine *e) { QV4::ExecutionEngine *v4 = QV8Engine::getV4(e); @@ -3355,16 +3341,10 @@ QQmlDelegateModelEngineData::~QQmlDelegateModelEngineData() { } -QV4::ReturnedValue QQmlDelegateModelEngineData::array(QV8Engine *engine, const QVector<QQmlChangeSet::Remove> &changes) -{ - QV4::ExecutionEngine *v4 = QV8Engine::getV4(engine); - return (new (v4->memoryManager) QQmlDelegateModelGroupRemoveArray(v4, changes))->asReturnedValue(); -} - -QV4::ReturnedValue QQmlDelegateModelEngineData::array(QV8Engine *engine, const QVector<QQmlChangeSet::Insert> &changes) +QV4::ReturnedValue QQmlDelegateModelEngineData::array(QV8Engine *engine, const QVector<QQmlChangeSet::Change> &changes) { QV4::ExecutionEngine *v4 = QV8Engine::getV4(engine); - return (new (v4->memoryManager) QQmlDelegateModelGroupInsertArray(v4, changes))->asReturnedValue(); + return (new (v4->memoryManager) QQmlDelegateModelGroupChangeArray(v4, changes))->asReturnedValue(); } QT_END_NAMESPACE diff --git a/src/qml/types/qqmldelegatemodel_p_p.h b/src/qml/types/qqmldelegatemodel_p_p.h index cf7a719455..3e8cfd32b3 100644 --- a/src/qml/types/qqmldelegatemodel_p_p.h +++ b/src/qml/types/qqmldelegatemodel_p_p.h @@ -161,16 +161,24 @@ protected: struct QQmlDelegateModelItemObject : QV4::Object { - V4_OBJECT; + struct Data : QV4::Object::Data { + QQmlDelegateModelItem *item; + }; + struct { + QQmlDelegateModelItem *item; + } __data; + + V4_OBJECT_NEW + QQmlDelegateModelItemObject(QV4::ExecutionEngine *engine, QQmlDelegateModelItem *item) : Object(engine) - , item(item) - { setVTable(staticVTable()); } + { + setVTable(staticVTable()); + d()->item = item; + } ~QQmlDelegateModelItemObject(); static void destroy(Managed *that); - - QQmlDelegateModelItem *item; }; @@ -275,12 +283,12 @@ public: void itemsInserted( const QVector<Compositor::Insert> &inserts, - QVarLengthArray<QVector<QQmlChangeSet::Insert>, Compositor::MaximumGroupCount> *translatedInserts, + QVarLengthArray<QVector<QQmlChangeSet::Change>, Compositor::MaximumGroupCount> *translatedInserts, QHash<int, QList<QQmlDelegateModelItem *> > *movedItems = 0); void itemsInserted(const QVector<Compositor::Insert> &inserts); void itemsRemoved( const QVector<Compositor::Remove> &removes, - QVarLengthArray<QVector<QQmlChangeSet::Remove>, Compositor::MaximumGroupCount> *translatedRemoves, + QVarLengthArray<QVector<QQmlChangeSet::Change>, Compositor::MaximumGroupCount> *translatedRemoves, QHash<int, QList<QQmlDelegateModelItem *> > *movedItems = 0); void itemsRemoved(const QVector<Compositor::Remove> &removes); void itemsMoved( diff --git a/src/qml/types/qqmlinstantiator.cpp b/src/qml/types/qqmlinstantiator.cpp index 724a76825b..73e4ba851a 100644 --- a/src/qml/types/qqmlinstantiator.cpp +++ b/src/qml/types/qqmlinstantiator.cpp @@ -137,7 +137,7 @@ void QQmlInstantiatorPrivate::_q_modelUpdated(const QQmlChangeSet &changeSet, bo int difference = 0; QHash<int, QVector<QPointer<QObject> > > moved; - foreach (const QQmlChangeSet::Remove &remove, changeSet.removes()) { + foreach (const QQmlChangeSet::Change &remove, changeSet.removes()) { int index = qMin(remove.index, objects.count()); int count = qMin(remove.index + remove.count, objects.count()) - index; if (remove.isMove()) { @@ -156,7 +156,7 @@ void QQmlInstantiatorPrivate::_q_modelUpdated(const QQmlChangeSet &changeSet, bo difference -= remove.count; } - foreach (const QQmlChangeSet::Insert &insert, changeSet.inserts()) { + foreach (const QQmlChangeSet::Change &insert, changeSet.inserts()) { int index = qMin(insert.index, objects.count()); if (insert.isMove()) { QVector<QPointer<QObject> > movedObjects = moved.value(insert.moveId); diff --git a/src/qml/util/qqmladaptormodel.cpp b/src/qml/util/qqmladaptormodel.cpp index c1c8bfa81d..6b48b3d38a 100644 --- a/src/qml/util/qqmladaptormodel.cpp +++ b/src/qml/util/qqmladaptormodel.cpp @@ -70,7 +70,7 @@ static QV4::ReturnedValue get_index(QV4::CallContext *ctx) if (!o) return ctx->throwTypeError(QStringLiteral("Not a valid VisualData object")); - return QV4::Encode(o->item->index); + return QV4::Encode(o->d()->item->index); } template <typename T, typename M> static void setModelDataType(QMetaObjectBuilder *builder, M *metaType) @@ -202,10 +202,10 @@ public: if (!o) return ctx->throwTypeError(QStringLiteral("Not a valid VisualData object")); - const QQmlAdaptorModel *const model = static_cast<QQmlDMCachedModelData *>(o->item)->type->model; - if (o->item->index >= 0 && *model) { + const QQmlAdaptorModel *const model = static_cast<QQmlDMCachedModelData *>(o->d()->item)->type->model; + if (o->d()->item->index >= 0 && *model) { const QAbstractItemModel * const aim = model->aim(); - return QV4::Encode(aim->hasChildren(aim->index(o->item->index, 0, model->rootIndex))); + return QV4::Encode(aim->hasChildren(aim->index(o->d()->item->index, 0, model->rootIndex))); } else { return QV4::Encode(false); } @@ -347,8 +347,8 @@ QV4::ReturnedValue QQmlDMCachedModelData::get_property(QV4::CallContext *ctx, ui if (!o) return ctx->throwTypeError(QStringLiteral("Not a valid VisualData object")); - QQmlDMCachedModelData *modelData = static_cast<QQmlDMCachedModelData *>(o->item); - if (o->item->index == -1) { + QQmlDMCachedModelData *modelData = static_cast<QQmlDMCachedModelData *>(o->d()->item); + if (o->d()->item->index == -1) { if (!modelData->cachedData.isEmpty()) { return ctx->engine->v8Engine->fromVariant( modelData->cachedData.at(modelData->type->hasModelData ? 0 : propertyId)); @@ -369,16 +369,16 @@ QV4::ReturnedValue QQmlDMCachedModelData::set_property(QV4::CallContext *ctx, ui if (!ctx->callData->argc) return ctx->throwTypeError(); - if (o->item->index == -1) { - QQmlDMCachedModelData *modelData = static_cast<QQmlDMCachedModelData *>(o->item); + if (o->d()->item->index == -1) { + QQmlDMCachedModelData *modelData = static_cast<QQmlDMCachedModelData *>(o->d()->item); if (!modelData->cachedData.isEmpty()) { if (modelData->cachedData.count() > 1) { modelData->cachedData[propertyId] = ctx->engine->v8Engine->toVariant(ctx->callData->args[0], QVariant::Invalid); - QMetaObject::activate(o->item, o->item->metaObject(), propertyId, 0); + QMetaObject::activate(o->d()->item, o->d()->item->metaObject(), propertyId, 0); } else if (modelData->cachedData.count() == 1) { modelData->cachedData[0] = ctx->engine->v8Engine->toVariant(ctx->callData->args[0], QVariant::Invalid); - QMetaObject::activate(o->item, o->item->metaObject(), 0, 0); - QMetaObject::activate(o->item, o->item->metaObject(), 1, 0); + QMetaObject::activate(o->d()->item, o->d()->item->metaObject(), 0, 0); + QMetaObject::activate(o->d()->item, o->d()->item->metaObject(), 1, 0); } } } @@ -589,7 +589,7 @@ public: if (!o) return ctx->throwTypeError(QStringLiteral("Not a valid VisualData object")); - return ctx->engine->v8Engine->fromVariant(static_cast<QQmlDMListAccessorData *>(o->item)->cachedData); + return ctx->engine->v8Engine->fromVariant(static_cast<QQmlDMListAccessorData *>(o->d()->item)->cachedData); } static QV4::ReturnedValue set_modelData(QV4::CallContext *ctx) @@ -601,7 +601,7 @@ public: if (!ctx->callData->argc) return ctx->throwTypeError(); - static_cast<QQmlDMListAccessorData *>(o->item)->setModelData(ctx->engine->v8Engine->toVariant(ctx->callData->args[0], QVariant::Invalid)); + static_cast<QQmlDMListAccessorData *>(o->d()->item)->setModelData(ctx->engine->v8Engine->toVariant(ctx->callData->args[0], QVariant::Invalid)); return QV4::Encode::undefined(); } diff --git a/src/qml/util/qqmlchangeset.cpp b/src/qml/util/qqmlchangeset.cpp index 831cb063a5..4e5e619d39 100644 --- a/src/qml/util/qqmlchangeset.cpp +++ b/src/qml/util/qqmlchangeset.cpp @@ -111,7 +111,7 @@ QQmlChangeSet &QQmlChangeSet::operator =(const QQmlChangeSet &changeSet) void QQmlChangeSet::insert(int index, int count) { - insert(QVector<Insert>() << Insert(index, count)); + insert(QVector<Change>() << Change(index, count)); } /*! @@ -120,8 +120,8 @@ void QQmlChangeSet::insert(int index, int count) void QQmlChangeSet::remove(int index, int count) { - QVector<Remove> removes; - removes.append(Remove(index, count)); + QVector<Change> removes; + removes.append(Change(index, count)); remove(&removes, 0); } @@ -134,10 +134,10 @@ void QQmlChangeSet::remove(int index, int count) void QQmlChangeSet::move(int from, int to, int count, int moveId) { - QVector<Remove> removes; - removes.append(Remove(from, count, moveId)); - QVector<Insert> inserts; - inserts.append(Insert(to, count, moveId)); + QVector<Change> removes; + removes.append(Change(from, count, moveId)); + QVector<Change> inserts; + inserts.append(Change(to, count, moveId)); remove(&removes, &inserts); insert(inserts); } @@ -159,8 +159,8 @@ void QQmlChangeSet::change(int index, int count) void QQmlChangeSet::apply(const QQmlChangeSet &changeSet) { - QVector<Remove> r = changeSet.m_removes; - QVector<Insert> i = changeSet.m_inserts; + QVector<Change> r = changeSet.m_removes; + QVector<Change> i = changeSet.m_inserts; QVector<Change> c = changeSet.m_changes; remove(&r, &i); insert(i); @@ -174,19 +174,19 @@ void QQmlChangeSet::apply(const QQmlChangeSet &changeSet) corresponding intersection in the optional \a inserts list. */ -void QQmlChangeSet::remove(const QVector<Remove> &removes, QVector<Insert> *inserts) +void QQmlChangeSet::remove(const QVector<Change> &removes, QVector<Change> *inserts) { - QVector<Remove> r = removes; + QVector<Change> r = removes; remove(&r, inserts); } -void QQmlChangeSet::remove(QVector<Remove> *removes, QVector<Insert> *inserts) +void QQmlChangeSet::remove(QVector<Change> *removes, QVector<Change> *inserts) { int removeCount = 0; int insertCount = 0; - QVector<Insert>::iterator insert = m_inserts.begin(); + QVector<Change>::iterator insert = m_inserts.begin(); QVector<Change>::iterator change = m_changes.begin(); - QVector<Remove>::iterator rit = removes->begin(); + QVector<Change>::iterator rit = removes->begin(); for (; rit != removes->end(); ++rit) { int index = rit->index + removeCount; int count = rit->count; @@ -223,7 +223,7 @@ void QQmlChangeSet::remove(QVector<Remove> *removes, QVector<Insert> *inserts) // a new delta for that portion and subtract the size of that delta from the current // one. if (offset < 0 && rit->moveId != -1) { - rit = removes->insert(rit, Remove( + rit = removes->insert(rit, Change( rit->index, -offset, rit->moveId, rit->offset)); ++rit; rit->count -= -offset; @@ -233,7 +233,7 @@ void QQmlChangeSet::remove(QVector<Remove> *removes, QVector<Insert> *inserts) removeCount += -offset; offset = 0; } else if (offset > 0 && insert->moveId != -1) { - insert = m_inserts.insert(insert, Insert( + insert = m_inserts.insert(insert, Change( insert->index - removeCount, offset, insert->moveId, insert->offset)); ++insert; insert->index += offset; @@ -246,7 +246,7 @@ void QQmlChangeSet::remove(QVector<Remove> *removes, QVector<Insert> *inserts) // If the current remove has a move id, find any inserts with the same move id and // replace the corresponding sections with the insert removed from the change set. if (rit->moveId != -1 && difference > 0 && inserts) { - for (QVector<Insert>::iterator iit = inserts->begin(); iit != inserts->end(); ++iit) { + for (QVector<Change>::iterator iit = inserts->begin(); iit != inserts->end(); ++iit) { if (iit->moveId != rit->moveId || rit->offset > iit->offset + iit->count || iit->offset > rit->offset + difference) { @@ -256,7 +256,7 @@ void QQmlChangeSet::remove(QVector<Remove> *removes, QVector<Insert> *inserts) // a new insert for the portion prior to the replacement insert. const int overlapOffset = rit->offset - iit->offset; if (overlapOffset > 0) { - iit = inserts->insert(iit, Insert( + iit = inserts->insert(iit, Change( iit->index, overlapOffset, iit->moveId, iit->offset)); ++iit; iit->index += overlapOffset; @@ -275,7 +275,7 @@ void QQmlChangeSet::remove(QVector<Remove> *removes, QVector<Insert> *inserts) const int count = qMin(iit->offset + iit->count, rit->offset + difference) - qMax(iit->offset, rit->offset); - iit = inserts->insert(iit, Insert( + iit = inserts->insert(iit, Change( iit->index, count, insert->moveId, @@ -316,12 +316,12 @@ void QQmlChangeSet::remove(QVector<Remove> *removes, QVector<Insert> *inserts) insert->index -= removeCount; removeCount = 0; - QVector<Remove>::iterator remove = m_removes.begin(); + QVector<Change>::iterator remove = m_removes.begin(); for (rit = removes->begin(); rit != removes->end(); ++rit) { if (rit->count == 0) continue; // Accumulate consecutive removes into a single delta before attempting to apply. - for (QVector<Remove>::iterator next = rit + 1; next != removes->end() + for (QVector<Change>::iterator next = rit + 1; next != removes->end() && next->index == rit->index && next->moveId == -1 && rit->moveId == -1; ++next) { @@ -336,7 +336,7 @@ void QQmlChangeSet::remove(QVector<Remove> *removes, QVector<Insert> *inserts) while (remove != m_removes.end() && index + rit->count >= remove->index) { int count = 0; const int offset = remove->index - index; - QVector<Remove>::iterator rend = remove; + QVector<Change>::iterator rend = remove; for (; rend != m_removes.end() && rit->moveId == -1 && rend->moveId == -1 @@ -366,7 +366,7 @@ void QQmlChangeSet::remove(QVector<Remove> *removes, QVector<Insert> *inserts) // Insert a remove for the portion of the unmergable current remove prior to the // point of intersection. if (offset > 0) { - remove = m_removes.insert(remove, Remove( + remove = m_removes.insert(remove, Change( rit->index, offset, rit->moveId, rit->offset)); ++remove; rit->count -= offset; @@ -395,19 +395,19 @@ void QQmlChangeSet::remove(QVector<Remove> *removes, QVector<Insert> *inserts) Applies a list of \a inserts to a change set. */ -void QQmlChangeSet::insert(const QVector<Insert> &inserts) +void QQmlChangeSet::insert(const QVector<Change> &inserts) { int insertCount = 0; - QVector<Insert>::iterator insert = m_inserts.begin(); + QVector<Change>::iterator insert = m_inserts.begin(); QVector<Change>::iterator change = m_changes.begin(); - for (QVector<Insert>::const_iterator iit = inserts.begin(); iit != inserts.end(); ++iit) { + for (QVector<Change>::const_iterator iit = inserts.begin(); iit != inserts.end(); ++iit) { if (iit->count == 0) continue; int index = iit->index - insertCount; - Insert current = *iit; + Change current = *iit; // Accumulate consecutive inserts into a single delta before attempting to insert. - for (QVector<Insert>::const_iterator next = iit + 1; next != inserts.end() + for (QVector<Change>::const_iterator next = iit + 1; next != inserts.end() && next->index == iit->index + iit->count && next->moveId == -1 && iit->moveId == -1; ++next) { @@ -459,7 +459,7 @@ void QQmlChangeSet::insert(const QVector<Insert> &inserts) // If either insert has a moveId then split the existing insert and insert the // current one in the middle. if (offset > 0) { - insert = m_inserts.insert(insert, Insert( + insert = m_inserts.insert(insert, Change( insert->index + insertCount, offset, insert->moveId, insert->offset)); ++insert; insert->index += offset; @@ -487,10 +487,10 @@ void QQmlChangeSet::insert(const QVector<Insert> &inserts) calling \l remove() followed by \l insert() with the same lists. */ -void QQmlChangeSet::move(const QVector<Remove> &removes, const QVector<Insert> &inserts) +void QQmlChangeSet::move(const QVector<Change> &removes, const QVector<Change> &inserts) { - QVector<Remove> r = removes; - QVector<Insert> i = inserts; + QVector<Change> r = removes; + QVector<Change> i = inserts; remove(&r, &i); insert(i); } @@ -507,7 +507,7 @@ void QQmlChangeSet::change(const QVector<Change> &changes) void QQmlChangeSet::change(QVector<Change> *changes) { - QVector<Insert>::iterator insert = m_inserts.begin(); + QVector<Change>::iterator insert = m_inserts.begin(); QVector<Change>::iterator change = m_changes.begin(); for (QVector<Change>::iterator cit = changes->begin(); cit != changes->end(); ++cit) { for (; insert != m_inserts.end() && insert->end() < cit->index; ++insert) {} @@ -560,55 +560,13 @@ void QQmlChangeSet::change(QVector<Change> *changes) QDebug operator <<(QDebug debug, const QQmlChangeSet &set) { debug.nospace() << "QQmlChangeSet("; - foreach (const QQmlChangeSet::Remove &remove, set.removes()) debug << remove; - foreach (const QQmlChangeSet::Insert &insert, set.inserts()) debug << insert; + foreach (const QQmlChangeSet::Change &remove, set.removes()) debug << remove; + foreach (const QQmlChangeSet::Change &insert, set.inserts()) debug << insert; foreach (const QQmlChangeSet::Change &change, set.changes()) debug << change; return debug.nospace() << ')'; } /*! - Prints a \a remove to the \a debug stream. -*/ - -QDebug operator <<(QDebug debug, const QQmlChangeSet::Remove &remove) -{ - if (remove.moveId == -1) { - return (debug.nospace() - << "Remove(" << remove.index - << ',' << remove.count - << ')').space(); - } else { - return (debug.nospace() - << "Remove(" << remove.index - << ',' << remove.count - << ',' << remove.moveId - << ',' << remove.offset - << ')').space(); - } -} - -/*! - Prints an \a insert to the \a debug stream. -*/ - -QDebug operator <<(QDebug debug, const QQmlChangeSet::Insert &insert) -{ - if (insert.moveId == -1) { - return (debug.nospace() - << "Insert(" << insert.index - << ',' << insert.count - << ')').space(); - } else { - return (debug.nospace() - << "Insert(" << insert.index - << ',' << insert.count - << ',' << insert.moveId - << ',' << insert.offset - << ')').space(); - } -} - -/*! Prints a \a change to the \a debug stream. */ diff --git a/src/qml/util/qqmlchangeset_p.h b/src/qml/util/qqmlchangeset_p.h index acafbd4eec..e79bc4a832 100644 --- a/src/qml/util/qqmlchangeset_p.h +++ b/src/qml/util/qqmlchangeset_p.h @@ -90,29 +90,14 @@ public: int end() const { return index + count; } }; - - struct Insert : public Change - { - Insert() {} - Insert(int index, int count, int moveId = -1, int offset = 0) - : Change(index, count, moveId, offset) {} - }; - - struct Remove : public Change - { - Remove() {} - Remove(int index, int count, int moveId = -1, int offset = 0) - : Change(index, count, moveId, offset) {} - }; - QQmlChangeSet(); QQmlChangeSet(const QQmlChangeSet &changeSet); ~QQmlChangeSet(); QQmlChangeSet &operator =(const QQmlChangeSet &changeSet); - const QVector<Remove> &removes() const { return m_removes; } - const QVector<Insert> &inserts() const { return m_inserts; } + const QVector<Change> &removes() const { return m_removes; } + const QVector<Change> &inserts() const { return m_inserts; } const QVector<Change> &changes() const { return m_changes; } void insert(int index, int count); @@ -120,9 +105,9 @@ public: void move(int from, int to, int count, int moveId); void change(int index, int count); - void insert(const QVector<Insert> &inserts); - void remove(const QVector<Remove> &removes, QVector<Insert> *inserts = 0); - void move(const QVector<Remove> &removes, const QVector<Insert> &inserts); + void insert(const QVector<Change> &inserts); + void remove(const QVector<Change> &removes, QVector<Change> *inserts = 0); + void move(const QVector<Change> &removes, const QVector<Change> &inserts); void change(const QVector<Change> &changes); void apply(const QQmlChangeSet &changeSet); @@ -139,26 +124,22 @@ public: int difference() const { return m_difference; } private: - void remove(QVector<Remove> *removes, QVector<Insert> *inserts); + void remove(QVector<Change> *removes, QVector<Change> *inserts); void change(QVector<Change> *changes); - QVector<Remove> m_removes; - QVector<Insert> m_inserts; + QVector<Change> m_removes; + QVector<Change> m_inserts; QVector<Change> m_changes; int m_difference; }; Q_DECLARE_TYPEINFO(QQmlChangeSet::Change, Q_PRIMITIVE_TYPE); -Q_DECLARE_TYPEINFO(QQmlChangeSet::Remove, Q_PRIMITIVE_TYPE); -Q_DECLARE_TYPEINFO(QQmlChangeSet::Insert, Q_PRIMITIVE_TYPE); Q_DECLARE_TYPEINFO(QQmlChangeSet::MoveKey, Q_PRIMITIVE_TYPE); inline uint qHash(const QQmlChangeSet::MoveKey &key) { return qHash(qMakePair(key.moveId, key.offset)); } inline bool operator ==(const QQmlChangeSet::MoveKey &l, const QQmlChangeSet::MoveKey &r) { return l.moveId == r.moveId && l.offset == r.offset; } -Q_QML_PRIVATE_EXPORT QDebug operator <<(QDebug debug, const QQmlChangeSet::Remove &remove); -Q_QML_PRIVATE_EXPORT QDebug operator <<(QDebug debug, const QQmlChangeSet::Insert &insert); Q_QML_PRIVATE_EXPORT QDebug operator <<(QDebug debug, const QQmlChangeSet::Change &change); Q_QML_PRIVATE_EXPORT QDebug operator <<(QDebug debug, const QQmlChangeSet &change); diff --git a/src/qml/util/qqmllistcompositor.cpp b/src/qml/util/qqmllistcompositor.cpp index 830a24e752..64528dafd2 100644 --- a/src/qml/util/qqmllistcompositor.cpp +++ b/src/qml/util/qqmllistcompositor.cpp @@ -951,7 +951,7 @@ void QQmlListCompositor::clear() void QQmlListCompositor::listItemsInserted( QVector<Insert> *translatedInsertions, void *list, - const QVector<QQmlChangeSet::Insert> &insertions, + const QVector<QQmlChangeSet::Change> &insertions, const QVector<MovedFlags> *movedFlags) { QT_QML_TRACE_LISTCOMPOSITOR(<< list << insertions) @@ -966,7 +966,7 @@ void QQmlListCompositor::listItemsInserted( it.incrementIndexes(it->count); continue; } - foreach (const QQmlChangeSet::Insert &insertion, insertions) { + foreach (const QQmlChangeSet::Change &insertion, insertions) { int offset = insertion.index - it->index; if ((offset > 0 && offset < it->count) || (offset == 0 && it->prepend()) @@ -1064,8 +1064,8 @@ void QQmlListCompositor::listItemsInserted( QT_QML_TRACE_LISTCOMPOSITOR(<< list << index << count) Q_ASSERT(count > 0); - QVector<QQmlChangeSet::Insert> insertions; - insertions.append(QQmlChangeSet::Insert(index, count)); + QVector<QQmlChangeSet::Change> insertions; + insertions.append(QQmlChangeSet::Change(index, count)); listItemsInserted(translatedInsertions, list, insertions); } @@ -1073,8 +1073,8 @@ void QQmlListCompositor::listItemsInserted( void QQmlListCompositor::listItemsRemoved( QVector<Remove> *translatedRemovals, void *list, - QVector<QQmlChangeSet::Remove> *removals, - QVector<QQmlChangeSet::Insert> *insertions, + QVector<QQmlChangeSet::Change> *removals, + QVector<QQmlChangeSet::Change> *insertions, QVector<MovedFlags> *movedFlags) { QT_QML_TRACE_LISTCOMPOSITOR(<< list << *removals) @@ -1086,7 +1086,7 @@ void QQmlListCompositor::listItemsRemoved( continue; } bool removed = false; - for (QVector<QQmlChangeSet::Remove>::iterator removal = removals->begin(); + for (QVector<QQmlChangeSet::Change>::iterator removal = removals->begin(); !removed && removal != removals->end(); ++removal) { int relativeIndex = removal->index - it->index; @@ -1104,7 +1104,7 @@ void QQmlListCompositor::listItemsRemoved( } if (removal->isMove()) { // If the removal was part of a move find the corresponding insert. - QVector<QQmlChangeSet::Insert>::iterator insertion = insertions->begin(); + QVector<QQmlChangeSet::Change>::iterator insertion = insertions->begin(); for (; insertion != insertions->end() && insertion->moveId != removal->moveId; ++insertion) {} Q_ASSERT(insertion != insertions->end()); @@ -1114,11 +1114,11 @@ void QQmlListCompositor::listItemsRemoved( // If the remove started before the current range, split it and the // corresponding insert so we're only working with intersecting part. int splitMoveId = ++m_moveId; - removal = removals->insert(removal, QQmlChangeSet::Remove( + removal = removals->insert(removal, QQmlChangeSet::Change( removal->index, -relativeIndex, splitMoveId)); ++removal; removal->count -= -relativeIndex; - insertion = insertions->insert(insertion, QQmlChangeSet::Insert( + insertion = insertions->insert(insertion, QQmlChangeSet::Change( insertion->index, -relativeIndex, splitMoveId)); ++insertion; insertion->index += -relativeIndex; @@ -1135,10 +1135,10 @@ void QQmlListCompositor::listItemsRemoved( if (removeCount < removal->count) { // If the remove doesn't encompass all of the current range, // split it and the corresponding insert. - removal = removals->insert(removal, QQmlChangeSet::Remove( + removal = removals->insert(removal, QQmlChangeSet::Change( removal->index, removeCount, translatedRemoval.moveId)); ++removal; - insertion = insertions->insert(insertion, QQmlChangeSet::Insert( + insertion = insertions->insert(insertion, QQmlChangeSet::Change( insertion->index, removeCount, translatedRemoval.moveId)); ++insertion; @@ -1253,8 +1253,8 @@ void QQmlListCompositor::listItemsRemoved( QT_QML_TRACE_LISTCOMPOSITOR(<< list << index << count) Q_ASSERT(count >= 0); - QVector<QQmlChangeSet::Remove> removals; - removals.append(QQmlChangeSet::Remove(index, count)); + QVector<QQmlChangeSet::Change> removals; + removals.append(QQmlChangeSet::Change(index, count)); listItemsRemoved(translatedRemovals, list, &removals, 0, 0); } @@ -1280,11 +1280,11 @@ void QQmlListCompositor::listItemsMoved( QT_QML_TRACE_LISTCOMPOSITOR(<< list << from << to << count) Q_ASSERT(count >= 0); - QVector<QQmlChangeSet::Remove> removals; - QVector<QQmlChangeSet::Insert> insertions; + QVector<QQmlChangeSet::Change> removals; + QVector<QQmlChangeSet::Change> insertions; QVector<MovedFlags> movedFlags; - removals.append(QQmlChangeSet::Remove(from, count, 0)); - insertions.append(QQmlChangeSet::Insert(to, count, 0)); + removals.append(QQmlChangeSet::Change(from, count, 0)); + insertions.append(QQmlChangeSet::Change(to, count, 0)); listItemsRemoved(translatedRemovals, list, &removals, &insertions, &movedFlags); listItemsInserted(translatedInsertions, list, insertions, &movedFlags); @@ -1342,16 +1342,16 @@ void QQmlListCompositor::listItemsChanged( void QQmlListCompositor::transition( Group from, Group to, - QVector<QQmlChangeSet::Remove> *removes, - QVector<QQmlChangeSet::Insert> *inserts) + QVector<QQmlChangeSet::Change> *removes, + QVector<QQmlChangeSet::Change> *inserts) { int removeCount = 0; for (iterator it(m_ranges.next, 0, Default, m_groupCount); *it != &m_ranges; *it = it->next) { if (it == from && it != to) { - removes->append(QQmlChangeSet::Remove(it.index[from]- removeCount, it->count)); + removes->append(QQmlChangeSet::Change(it.index[from]- removeCount, it->count)); removeCount += it->count; } else if (it != from && it == to) { - inserts->append(QQmlChangeSet::Insert(it.index[to], it->count)); + inserts->append(QQmlChangeSet::Change(it.index[to], it->count)); } it.incrementIndexes(it->count); } diff --git a/src/qml/util/qqmllistcompositor_p.h b/src/qml/util/qqmllistcompositor_p.h index 5d87051582..c26b62a38c 100644 --- a/src/qml/util/qqmllistcompositor_p.h +++ b/src/qml/util/qqmllistcompositor_p.h @@ -263,8 +263,8 @@ public: void transition( Group from, Group to, - QVector<QQmlChangeSet::Remove> *removes, - QVector<QQmlChangeSet::Insert> *inserts); + QVector<QQmlChangeSet::Change> *removes, + QVector<QQmlChangeSet::Change> *inserts); private: Range m_ranges; @@ -290,13 +290,13 @@ private: void listItemsRemoved( QVector<Remove> *translatedRemovals, void *list, - QVector<QQmlChangeSet::Remove> *removals, - QVector<QQmlChangeSet::Insert> *insertions = 0, + QVector<QQmlChangeSet::Change> *removals, + QVector<QQmlChangeSet::Change> *insertions = 0, QVector<MovedFlags> *movedFlags = 0); void listItemsInserted( QVector<Insert> *translatedInsertions, void *list, - const QVector<QQmlChangeSet::Insert> &insertions, + const QVector<QQmlChangeSet::Change> &insertions, const QVector<MovedFlags> *movedFlags = 0); void listItemsChanged( QVector<Change> *translatedChanges, diff --git a/src/quick/items/qquickgridview.cpp b/src/quick/items/qquickgridview.cpp index d5ca3a128e..77ff275619 100644 --- a/src/quick/items/qquickgridview.cpp +++ b/src/quick/items/qquickgridview.cpp @@ -198,7 +198,7 @@ public: virtual void setPosition(qreal pos); virtual void layoutVisibleItems(int fromModelIndex = 0); - virtual bool applyInsertionChange(const QQmlChangeSet::Insert &insert, ChangeResult *changeResult, QList<FxViewItem *> *addedItems, QList<MovedItem> *movingIntoView); + virtual bool applyInsertionChange(const QQmlChangeSet::Change &insert, ChangeResult *changeResult, QList<FxViewItem *> *addedItems, QList<MovedItem> *movingIntoView); virtual void translateAndTransitionItemsAfter(int afterModelIndex, const ChangeResult &insertionResult, const ChangeResult &removalResult); virtual bool needsRefillForAddedOrRemovedIndex(int index) const; @@ -2325,7 +2325,7 @@ void QQuickGridView::moveCurrentIndexRight() } } -bool QQuickGridViewPrivate::applyInsertionChange(const QQmlChangeSet::Insert &change, ChangeResult *insertResult, QList<FxViewItem *> *addedItems, QList<MovedItem> *movingIntoView) +bool QQuickGridViewPrivate::applyInsertionChange(const QQmlChangeSet::Change &change, ChangeResult *insertResult, QList<FxViewItem *> *addedItems, QList<MovedItem> *movingIntoView) { Q_Q(QQuickGridView); diff --git a/src/quick/items/qquickitemview.cpp b/src/quick/items/qquickitemview.cpp index 94abbd0954..ef696dae96 100644 --- a/src/quick/items/qquickitemview.cpp +++ b/src/quick/items/qquickitemview.cpp @@ -176,7 +176,7 @@ void QQuickItemViewChangeSet::applyChanges(const QQmlChangeSet &changeSet) int moveId = -1; int moveOffset = 0; - foreach (const QQmlChangeSet::Remove &r, changeSet.removes()) { + foreach (const QQmlChangeSet::Change &r, changeSet.removes()) { itemCount -= r.count; if (moveId == -1 && newCurrentIndex >= r.index + r.count) { newCurrentIndex -= r.count; @@ -195,7 +195,7 @@ void QQuickItemViewChangeSet::applyChanges(const QQmlChangeSet &changeSet) currentChanged = true; } } - foreach (const QQmlChangeSet::Insert &i, changeSet.inserts()) { + foreach (const QQmlChangeSet::Change &i, changeSet.inserts()) { if (moveId == -1) { if (itemCount && newCurrentIndex >= i.index) { newCurrentIndex += i.count; @@ -1038,7 +1038,7 @@ void QQuickItemViewPrivate::applyPendingChanges() layout(); } -int QQuickItemViewPrivate::findMoveKeyIndex(QQmlChangeSet::MoveKey key, const QVector<QQmlChangeSet::Remove> &changes) const +int QQuickItemViewPrivate::findMoveKeyIndex(QQmlChangeSet::MoveKey key, const QVector<QQmlChangeSet::Change> &changes) const { for (int i=0; i<changes.count(); i++) { for (int j=changes[i].index; j<changes[i].index + changes[i].count; j++) { @@ -1943,8 +1943,8 @@ bool QQuickItemViewPrivate::applyModelChanges(ChangeResult *totalInsertionResult totalInsertionResult->visiblePos = prevViewPos; totalRemovalResult->visiblePos = prevViewPos; - const QVector<QQmlChangeSet::Remove> &removals = currentChanges.pendingChanges.removes(); - const QVector<QQmlChangeSet::Insert> &insertions = currentChanges.pendingChanges.inserts(); + const QVector<QQmlChangeSet::Change> &removals = currentChanges.pendingChanges.removes(); + const QVector<QQmlChangeSet::Change> &insertions = currentChanges.pendingChanges.inserts(); ChangeResult insertionResult(prevViewPos); ChangeResult removalResult(prevViewPos); @@ -1964,7 +1964,7 @@ bool QQuickItemViewPrivate::applyModelChanges(ChangeResult *totalInsertionResult } } if (runDelayedRemoveTransition) { - QQmlChangeSet::Remove removal; + QQmlChangeSet::Change removal; for (QList<FxViewItem*>::Iterator it = visibleItems.begin(); it != visibleItems.end();) { FxViewItem *item = *it; if (item->index == -1 && !item->attached->delayRemove()) { @@ -2061,7 +2061,7 @@ bool QQuickItemViewPrivate::applyModelChanges(ChangeResult *totalInsertionResult return visibleAffected; } -bool QQuickItemViewPrivate::applyRemovalChange(const QQmlChangeSet::Remove &removal, ChangeResult *removeResult, int *removedCount) +bool QQuickItemViewPrivate::applyRemovalChange(const QQmlChangeSet::Change &removal, ChangeResult *removeResult, int *removedCount) { Q_Q(QQuickItemView); bool visibleAffected = false; @@ -2111,7 +2111,7 @@ bool QQuickItemViewPrivate::applyRemovalChange(const QQmlChangeSet::Remove &remo return visibleAffected; } -void QQuickItemViewPrivate::removeItem(FxViewItem *item, const QQmlChangeSet::Remove &removal, ChangeResult *removeResult) +void QQuickItemViewPrivate::removeItem(FxViewItem *item, const QQmlChangeSet::Change &removal, ChangeResult *removeResult) { if (removeResult->visiblePos.isValid()) { if (item->position() < removeResult->visiblePos) diff --git a/src/quick/items/qquickitemview_p_p.h b/src/quick/items/qquickitemview_p_p.h index a0d17b3bf9..3f0f3b3646 100644 --- a/src/quick/items/qquickitemview_p_p.h +++ b/src/quick/items/qquickitemview_p_p.h @@ -209,8 +209,8 @@ public: void applyPendingChanges(); bool applyModelChanges(ChangeResult *insertionResult, ChangeResult *removalResult); - bool applyRemovalChange(const QQmlChangeSet::Remove &removal, ChangeResult *changeResult, int *removedCount); - void removeItem(FxViewItem *item, const QQmlChangeSet::Remove &removal, ChangeResult *removeResult); + bool applyRemovalChange(const QQmlChangeSet::Change &removal, ChangeResult *changeResult, int *removedCount); + void removeItem(FxViewItem *item, const QQmlChangeSet::Change &removal, ChangeResult *removeResult); virtual void updateSizeChangesBeforeVisiblePos(FxViewItem *item, ChangeResult *removeResult); void repositionFirstItem(FxViewItem *prevVisibleItemsFirst, qreal prevVisibleItemsFirstPos, FxViewItem *prevFirstVisible, ChangeResult *insertionResult, ChangeResult *removalResult); @@ -221,7 +221,7 @@ public: bool prepareNonVisibleItemTransition(FxViewItem *item, const QRectF &viewBounds); virtual void viewItemTransitionFinished(QQuickItemViewTransitionableItem *item); - int findMoveKeyIndex(QQmlChangeSet::MoveKey key, const QVector<QQmlChangeSet::Remove> &changes) const; + int findMoveKeyIndex(QQmlChangeSet::MoveKey key, const QVector<QQmlChangeSet::Change> &changes) const; void checkVisible() const; void showVisibleItems() const; @@ -350,7 +350,7 @@ protected: virtual void layoutVisibleItems(int fromModelIndex = 0) = 0; virtual void changedVisibleIndex(int newIndex) = 0; - virtual bool applyInsertionChange(const QQmlChangeSet::Insert &insert, ChangeResult *changeResult, + virtual bool applyInsertionChange(const QQmlChangeSet::Change &insert, ChangeResult *changeResult, QList<FxViewItem *> *newItems, QList<MovedItem> *movingIntoView) = 0; virtual bool needsRefillForAddedOrRemovedIndex(int) const { return false; } diff --git a/src/quick/items/qquicklistview.cpp b/src/quick/items/qquicklistview.cpp index d1e8b43416..a1388e3512 100644 --- a/src/quick/items/qquicklistview.cpp +++ b/src/quick/items/qquicklistview.cpp @@ -107,7 +107,7 @@ public: virtual void setPosition(qreal pos); virtual void layoutVisibleItems(int fromModelIndex = 0); - virtual bool applyInsertionChange(const QQmlChangeSet::Insert &insert, ChangeResult *changeResult, QList<FxViewItem *> *addedItems, QList<MovedItem> *movingIntoView); + virtual bool applyInsertionChange(const QQmlChangeSet::Change &insert, ChangeResult *changeResult, QList<FxViewItem *> *addedItems, QList<MovedItem> *movingIntoView); virtual void translateAndTransitionItemsAfter(int afterIndex, const ChangeResult &insertionResult, const ChangeResult &removalResult); virtual void updateSectionCriteria(); @@ -2942,7 +2942,7 @@ void QQuickListViewPrivate::updateSectionCriteria() } } -bool QQuickListViewPrivate::applyInsertionChange(const QQmlChangeSet::Insert &change, ChangeResult *insertResult, QList<FxViewItem *> *addedItems, QList<MovedItem> *movingIntoView) +bool QQuickListViewPrivate::applyInsertionChange(const QQmlChangeSet::Change &change, ChangeResult *insertResult, QList<FxViewItem *> *addedItems, QList<MovedItem> *movingIntoView) { int modelIndex = change.index; int count = change.count; diff --git a/src/quick/items/qquickpathview.cpp b/src/quick/items/qquickpathview.cpp index 45cd8e184c..de5ed99640 100644 --- a/src/quick/items/qquickpathview.cpp +++ b/src/quick/items/qquickpathview.cpp @@ -2033,7 +2033,7 @@ void QQuickPathView::modelUpdated(const QQmlChangeSet &changeSet, bool reset) int moveOffset = 0; bool currentChanged = false; bool changedOffset = false; - foreach (const QQmlChangeSet::Remove &r, changeSet.removes()) { + foreach (const QQmlChangeSet::Change &r, changeSet.removes()) { if (moveId == -1 && d->currentIndex >= r.index + r.count) { d->currentIndex -= r.count; currentChanged = true; @@ -2059,7 +2059,7 @@ void QQuickPathView::modelUpdated(const QQmlChangeSet &changeSet, bool reset) } d->modelCount -= r.count; } - foreach (const QQmlChangeSet::Insert &i, changeSet.inserts()) { + foreach (const QQmlChangeSet::Change &i, changeSet.inserts()) { if (d->modelCount) { if (moveId == -1 && i.index <= d->currentIndex) { d->currentIndex += i.count; diff --git a/src/quick/items/qquickrepeater.cpp b/src/quick/items/qquickrepeater.cpp index e226d7ba49..2f7a8e7420 100644 --- a/src/quick/items/qquickrepeater.cpp +++ b/src/quick/items/qquickrepeater.cpp @@ -456,7 +456,7 @@ void QQuickRepeater::modelUpdated(const QQmlChangeSet &changeSet, bool reset) int difference = 0; QHash<int, QVector<QPointer<QQuickItem> > > moved; - foreach (const QQmlChangeSet::Remove &remove, changeSet.removes()) { + foreach (const QQmlChangeSet::Change &remove, changeSet.removes()) { int index = qMin(remove.index, d->deletables.count()); int count = qMin(remove.index + remove.count, d->deletables.count()) - index; if (remove.isMove()) { @@ -479,7 +479,7 @@ void QQuickRepeater::modelUpdated(const QQmlChangeSet &changeSet, bool reset) } d->createFrom = -1; - foreach (const QQmlChangeSet::Insert &insert, changeSet.inserts()) { + foreach (const QQmlChangeSet::Change &insert, changeSet.inserts()) { int index = qMin(insert.index, d->deletables.count()); if (insert.isMove()) { QVector<QPointer<QQuickItem> > items = moved.value(insert.moveId); diff --git a/tests/auto/qml/qqmlchangeset/tst_qqmlchangeset.cpp b/tests/auto/qml/qqmlchangeset/tst_qqmlchangeset.cpp index 0f09de26d3..cfc850a9c6 100644 --- a/tests/auto/qml/qqmlchangeset/tst_qqmlchangeset.cpp +++ b/tests/auto/qml/qqmlchangeset/tst_qqmlchangeset.cpp @@ -148,7 +148,7 @@ public: return false; } if (signal.moveId != -1) { - QQmlChangeSet::Insert insert(signal.index, signal.count, signal.moveId, signal.offset); + QQmlChangeSet::Change insert(signal.index, signal.count, signal.moveId, signal.offset); for (int i = insert.start(); i < insert.end(); ++i) list.insert(i, removedValues.take(insert.moveKey(i))); } else { @@ -160,7 +160,7 @@ public: return false; } if (signal.moveId != -1) { - QQmlChangeSet::Remove remove(signal.index, signal.count, signal.moveId, signal.offset); + QQmlChangeSet::Change remove(signal.index, signal.count, signal.moveId, signal.offset); for (int i = remove.start(); i < remove.end(); ++i) removedValues.insert(remove.moveKey(i), list.at(i)); } @@ -1182,9 +1182,9 @@ void tst_qqmlchangeset::sequence() } SignalList changes; - foreach (const QQmlChangeSet::Remove &remove, set.removes()) + foreach (const QQmlChangeSet::Change &remove, set.removes()) changes << Remove(remove.index, remove.count, remove.moveId, remove.offset); - foreach (const QQmlChangeSet::Insert &insert, set.inserts()) + foreach (const QQmlChangeSet::Change &insert, set.inserts()) changes << Insert(insert.index, insert.count, insert.moveId, insert.offset); foreach (const QQmlChangeSet::Change &change, set.changes()) changes << Change(change.index, change.count); @@ -1322,15 +1322,15 @@ void tst_qqmlchangeset::apply() } SignalList changes; - foreach (const QQmlChangeSet::Remove &remove, set.removes()) + foreach (const QQmlChangeSet::Change &remove, set.removes()) changes << Remove(remove.index, remove.count, remove.moveId, remove.offset); - foreach (const QQmlChangeSet::Insert &insert, set.inserts()) + foreach (const QQmlChangeSet::Change &insert, set.inserts()) changes << Insert(insert.index, insert.count, insert.moveId, insert.offset); SignalList linearChanges; - foreach (const QQmlChangeSet::Remove &remove, linearSet.removes()) + foreach (const QQmlChangeSet::Change &remove, linearSet.removes()) linearChanges << Remove(remove.index, remove.count, remove.moveId, remove.offset); - foreach (const QQmlChangeSet::Insert &insert, linearSet.inserts()) + foreach (const QQmlChangeSet::Change &insert, linearSet.inserts()) linearChanges << Insert(insert.index, insert.count, insert.moveId, insert.offset); // The output in the failing tests isn't incorrect, merely sub-optimal. @@ -1364,17 +1364,17 @@ void tst_qqmlchangeset::removeConsecutive() QFETCH(SignalList, input); QFETCH(SignalList, output); - QVector<QQmlChangeSet::Remove> removes; + QVector<QQmlChangeSet::Change> removes; foreach (const Signal &signal, input) { QVERIFY(signal.isRemove()); - removes.append(QQmlChangeSet::Remove(signal.index, signal.count, signal.moveId, signal.offset)); + removes.append(QQmlChangeSet::Change(signal.index, signal.count, signal.moveId, signal.offset)); } QQmlChangeSet set; set.remove(removes); SignalList changes; - foreach (const QQmlChangeSet::Remove &remove, set.removes()) + foreach (const QQmlChangeSet::Change &remove, set.removes()) changes << Remove(remove.index, remove.count, remove.moveId, remove.offset); QVERIFY(set.inserts().isEmpty()); QVERIFY(set.changes().isEmpty()); @@ -1404,17 +1404,17 @@ void tst_qqmlchangeset::insertConsecutive() QFETCH(SignalList, input); QFETCH(SignalList, output); - QVector<QQmlChangeSet::Insert> inserts; + QVector<QQmlChangeSet::Change> inserts; foreach (const Signal &signal, input) { QVERIFY(signal.isInsert()); - inserts.append(QQmlChangeSet::Insert(signal.index, signal.count, signal.moveId, signal.offset)); + inserts.append(QQmlChangeSet::Change(signal.index, signal.count, signal.moveId, signal.offset)); } QQmlChangeSet set; set.insert(inserts); SignalList changes; - foreach (const QQmlChangeSet::Insert &insert, set.inserts()) + foreach (const QQmlChangeSet::Change &insert, set.inserts()) changes << Insert(insert.index, insert.count, insert.moveId, insert.offset); QVERIFY(set.removes().isEmpty()); QVERIFY(set.changes().isEmpty()); @@ -1462,12 +1462,12 @@ void tst_qqmlchangeset::debug() changeSet.insert(15, 2); changeSet.change(24, 8); - QTest::ignoreMessage(QtDebugMsg, "QQmlChangeSet(Remove(0,12) Remove(5,4) Insert(3,9) Insert(15,2) Change(24,8) )"); + QTest::ignoreMessage(QtDebugMsg, "QQmlChangeSet(Change(0,12) Change(5,4) Change(3,9) Change(15,2) Change(24,8) )"); qDebug() << changeSet; changeSet.clear(); - QTest::ignoreMessage(QtDebugMsg, "QQmlChangeSet(Remove(12,4,0,0) Insert(5,4,0,0) )"); + QTest::ignoreMessage(QtDebugMsg, "QQmlChangeSet(Change(12,4) Change(5,4) )"); changeSet.move(12, 5, 4, 0); qDebug() << changeSet; @@ -1537,9 +1537,9 @@ void tst_qqmlchangeset::random() } SignalList output; - foreach (const QQmlChangeSet::Remove &remove, accumulatedSet.removes()) + foreach (const QQmlChangeSet::Change &remove, accumulatedSet.removes()) output << Remove(remove.index, remove.count, remove.moveId, remove.offset); - foreach (const QQmlChangeSet::Insert &insert, accumulatedSet.inserts()) + foreach (const QQmlChangeSet::Change &insert, accumulatedSet.inserts()) output << Insert(insert.index, insert.count, insert.moveId, insert.offset); QVector<int> inputList; |