summaryrefslogtreecommitdiffstats
path: root/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp
diff options
context:
space:
mode:
authorQt Continuous Integration System <qt-info@nokia.com>2010-10-12 13:52:10 (GMT)
committerQt Continuous Integration System <qt-info@nokia.com>2010-10-12 13:52:10 (GMT)
commitdb2c3c8dc14369e9c2d987916bf10c04567c41d1 (patch)
treeb7fab9db7078b402199ef7191df6c9d48b4d94ae /src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp
parentb05b53cd90ef6dcbf6395ba991e0f848415136aa (diff)
parentc284a54ac24b6ff800b66c193016cc98d6305293 (diff)
downloadQt-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.cpp21
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)