diff options
author | Qt Continuous Integration System <qt-info@nokia.com> | 2010-10-12 13:52:10 (GMT) |
---|---|---|
committer | Qt Continuous Integration System <qt-info@nokia.com> | 2010-10-12 13:52:10 (GMT) |
commit | db2c3c8dc14369e9c2d987916bf10c04567c41d1 (patch) | |
tree | b7fab9db7078b402199ef7191df6c9d48b4d94ae /src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp | |
parent | b05b53cd90ef6dcbf6395ba991e0f848415136aa (diff) | |
parent | c284a54ac24b6ff800b66c193016cc98d6305293 (diff) | |
download | Qt-db2c3c8dc14369e9c2d987916bf10c04567c41d1.zip Qt-db2c3c8dc14369e9c2d987916bf10c04567c41d1.tar.gz Qt-db2c3c8dc14369e9c2d987916bf10c04567c41d1.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: (25 commits)
Update QtDeclarative def files
Update QtCore def files
Compile on MSVC2008
Bug: TextEdit ignores plain text format when pasting text
Update sections if model content changes.
Fix autotest on windows
Test for absent qmldir
Allow objectName to be used in QML bindings
Install the declarative objectNameChanged callback
Don't give focus to a FocusScope that has had focus explicitly cleared.
Add a declarative callback for when a QObject's objectName changes
Ensure GridView header is visible at the top of the view.
Allow aliases to value type properties
Image.sourceSize is incorrect after changing Image.source
Test for QTBUG-13685
Don't forward keys to invisible items.
Disable Text {} image caching by default
Check plugin and QML file case on Mac and Windows
Add test for QTBUG-14279
Ensure that onRelease is called for doubleClick events.
...
Diffstat (limited to 'src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp')
-rw-r--r-- | src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp b/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp index 439f500..e569dd2 100644 --- a/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp +++ b/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp @@ -403,6 +403,8 @@ public: QDeclarativeListAccessor *m_listAccessor; QModelIndex m_root; + QList<QByteArray> watchedRoles; + QList<int> watchedRoleIds; }; class QDeclarativeVisualDataModelDataMetaObject : public QDeclarativeOpenMetaObject @@ -1170,10 +1172,25 @@ int QDeclarativeVisualDataModel::indexOf(QDeclarativeItem *item, QObject *) cons return -1; } +void QDeclarativeVisualDataModel::setWatchedRoles(QList<QByteArray> roles) +{ + Q_D(QDeclarativeVisualDataModel); + d->watchedRoles = roles; + d->watchedRoleIds.clear(); +} + void QDeclarativeVisualDataModel::_q_itemsChanged(int index, int count, const QList<int> &roles) { Q_D(QDeclarativeVisualDataModel); + bool changed = false; + if (!d->watchedRoles.isEmpty() && d->watchedRoleIds.isEmpty()) { + foreach (QByteArray r, d->watchedRoles) { + if (d->m_roleNames.contains(r)) + d->watchedRoleIds << d->m_roleNames.value(r); + } + } + for (QHash<int,QDeclarativeVisualDataModelPrivate::ObjectRef>::ConstIterator iter = d->m_cache.begin(); iter != d->m_cache.end(); ++iter) { const int idx = iter.key(); @@ -1183,6 +1200,8 @@ void QDeclarativeVisualDataModel::_q_itemsChanged(int index, int count, QDeclarativeVisualDataModelData *data = d->data(objRef.obj); for (int roleIdx = 0; roleIdx < roles.count(); ++roleIdx) { int role = roles.at(roleIdx); + if (!changed && !d->watchedRoleIds.isEmpty() && d->watchedRoleIds.contains(role)) + changed = true; int propId = data->propForRole(role); if (propId != -1) { if (data->hasValue(propId)) { @@ -1217,6 +1236,8 @@ void QDeclarativeVisualDataModel::_q_itemsChanged(int index, int count, } } } + if (changed) + emit itemsChanged(index, count); } void QDeclarativeVisualDataModel::_q_itemsInserted(int index, int count) |