diff options
-rw-r--r-- | src/qml/util/qqmladaptormodel.cpp | 23 | ||||
-rw-r--r-- | tests/auto/quick/qquickvisualdatamodel/tst_qquickvisualdatamodel.cpp | 2 |
2 files changed, 20 insertions, 5 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; + } }; //----------------------------------------------------------------- diff --git a/tests/auto/quick/qquickvisualdatamodel/tst_qquickvisualdatamodel.cpp b/tests/auto/quick/qquickvisualdatamodel/tst_qquickvisualdatamodel.cpp index da227b871b..6498a80c79 100644 --- a/tests/auto/quick/qquickvisualdatamodel/tst_qquickvisualdatamodel.cpp +++ b/tests/auto/quick/qquickvisualdatamodel/tst_qquickvisualdatamodel.cpp @@ -2996,7 +2996,7 @@ void tst_qquickvisualdatamodel::insert_data() "items.get(2).model.modelData = \"seven\"; }") << 4 << 5 << 0 << true << false << false << false << false << QString("modelData") - << (QStringList() << "eight" << "one" << "two" << "three" << "four"); + << (QStringList() << "eight" << "one" << "seven" << "three" << "four"); QTest::newRow("StringList.create prepend modelData") << stringListSource[i] |