diff options
Diffstat (limited to 'src/qml/util')
-rw-r--r-- | src/qml/util/qqmladaptormodel.cpp | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/src/qml/util/qqmladaptormodel.cpp b/src/qml/util/qqmladaptormodel.cpp index 32bf43159a..e460c376da 100644 --- a/src/qml/util/qqmladaptormodel.cpp +++ b/src/qml/util/qqmladaptormodel.cpp @@ -566,10 +566,11 @@ public: void setModelData(const QVariant &data) { - if (index == -1 && data != cachedData) { - cachedData = data; - emit modelDataChanged(); - } + if (data == cachedData) + return; + + cachedData = data; + emit modelDataChanged(); } static QV4::ReturnedValue get_modelData(const QV4::FunctionObject *b, const QV4::Value *thisObject, const QV4::Value *, int) @@ -666,6 +667,20 @@ public: index, row, column, index >= 0 && index < model.list.count() ? model.list.at(index) : QVariant()); } + + bool notify(const QQmlAdaptorModel &model, const QList<QQmlDelegateModelItem *> &items, int index, int count, const QVector<int> &) const override + { + for (auto modelItem : items) { + const int modelItemIndex = modelItem->index; + if (modelItemIndex < index || modelItemIndex >= index + count) + continue; + + auto listModelItem = static_cast<QQmlDMListAccessorData *>(modelItem); + QVariant updatedModelData = model.list.at(listModelItem->index); + listModelItem->setModelData(updatedModelData); + } + return true; + } }; //----------------------------------------------------------------- |