diff options
author | Qt Continuous Integration System <qt-info@nokia.com> | 2010-09-17 13:32:20 (GMT) |
---|---|---|
committer | Qt Continuous Integration System <qt-info@nokia.com> | 2010-09-17 13:32:20 (GMT) |
commit | 2046037499830506ec24097c9b7a739bb7c78566 (patch) | |
tree | 1af518306ce87b7fb1fc7803a4d6d2f663b2506c /src/declarative/util/qdeclarativelistmodelworkeragent.cpp | |
parent | cb3b83e64154e9725c0c050ea32a4a632ad9f041 (diff) | |
parent | 39dcbf66fd482bc49a475ec056f90e8a123cd4a8 (diff) | |
download | Qt-2046037499830506ec24097c9b7a739bb7c78566.zip Qt-2046037499830506ec24097c9b7a739bb7c78566.tar.gz Qt-2046037499830506ec24097c9b7a739bb7c78566.tar.bz2 |
Merge branch '4.7' of scm.dev.nokia.troll.no:qt/qt-qml into 4.7-integration
* '4.7' of scm.dev.nokia.troll.no:qt/qt-qml:
Fix example after changes to font.letterSpacing.
Autotest and small fix for QDeclarativeFontLoader.
Improve error messages
Changes to objects returned from get() should emit itemsChanged() so
Make it clear that private ListModel constructor is only for worker
Remove duplicated move() implementations
Doc changes
Fix QDeclarativeXmlQuery mutex locking and don't wait for new jobs if the query has already quit
PathView didn't accept mouse events, preventing it from working in a Flickable.
Moving items in a PathView caused PathView.onPath to be set to false.
Fix worker agent to emit ListModel itemsChanged() correctly when set()
Diffstat (limited to 'src/declarative/util/qdeclarativelistmodelworkeragent.cpp')
-rw-r--r-- | src/declarative/util/qdeclarativelistmodelworkeragent.cpp | 33 |
1 files changed, 28 insertions, 5 deletions
diff --git a/src/declarative/util/qdeclarativelistmodelworkeragent.cpp b/src/declarative/util/qdeclarativelistmodelworkeragent.cpp index d9df169..6804d4a 100644 --- a/src/declarative/util/qdeclarativelistmodelworkeragent.cpp +++ b/src/declarative/util/qdeclarativelistmodelworkeragent.cpp @@ -83,11 +83,11 @@ void QDeclarativeListModelWorkerAgent::Data::changedChange(int index, int count) } QDeclarativeListModelWorkerAgent::QDeclarativeListModelWorkerAgent(QDeclarativeListModel *model) -: m_engine(0), m_ref(1), m_orig(model), m_copy(new QDeclarativeListModel(true, this)) + : m_engine(0), + m_ref(1), + m_orig(model), + m_copy(new QDeclarativeListModel(model, this)) { - m_copy->m_flat->m_roles = m_orig->m_flat->m_roles; - m_copy->m_flat->m_strings = m_orig->m_flat->m_strings; - m_copy->m_flat->m_values = m_orig->m_flat->m_values; } QDeclarativeListModelWorkerAgent::~QDeclarativeListModelWorkerAgent() @@ -194,6 +194,11 @@ void QDeclarativeListModelWorkerAgent::sync() mutex.unlock(); } +void QDeclarativeListModelWorkerAgent::changedData(int index, int count) +{ + data.changedChange(index, count); +} + bool QDeclarativeListModelWorkerAgent::event(QEvent *e) { if (e->type() == QEvent::User) { @@ -216,6 +221,24 @@ bool QDeclarativeListModelWorkerAgent::event(QEvent *e) orig->m_strings = copy->m_strings; orig->m_values = copy->m_values; + // update the orig->m_nodeData list + for (int ii = 0; ii < changes.count(); ++ii) { + const Change &change = changes.at(ii); + switch (change.type) { + case Change::Inserted: + orig->insertedNode(change.index); + break; + case Change::Removed: + orig->removedNode(change.index); + break; + case Change::Moved: + orig->moveNodes(change.index, change.to, change.count); + break; + case Change::Changed: + break; + } + } + syncDone.wakeAll(); locker.unlock(); @@ -232,7 +255,7 @@ bool QDeclarativeListModelWorkerAgent::event(QEvent *e) emit m_orig->itemsMoved(change.index, change.to, change.count); break; case Change::Changed: - emit m_orig->itemsChanged(change.index, change.to, orig->m_roles.keys()); + emit m_orig->itemsChanged(change.index, change.count, orig->m_roles.keys()); break; } } |