diff options
author | Aaron Kennedy <aaron.kennedy@nokia.com> | 2012-02-13 16:14:53 +0000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-02-20 08:34:28 +0100 |
commit | de431c5e6cc8d439ed039e24f050ad8020792ab8 (patch) | |
tree | 0c86757425ae3fdb1880bfe28d0dbf08637635e0 /src | |
parent | d25ff859591c2450606c56cfc2cebd577165e1b6 (diff) |
Use the existing endpoint object to connect alias notify signals
Change-Id: I891ea5e3854a4fc92ba59e98417ad72774bd7adb
Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/declarative/qml/qdeclarativevmemetaobject.cpp | 34 |
1 files changed, 17 insertions, 17 deletions
diff --git a/src/declarative/qml/qdeclarativevmemetaobject.cpp b/src/declarative/qml/qdeclarativevmemetaobject.cpp index 36a8838c75..d9ad56acc2 100644 --- a/src/declarative/qml/qdeclarativevmemetaobject.cpp +++ b/src/declarative/qml/qdeclarativevmemetaobject.cpp @@ -406,27 +406,27 @@ void QDeclarativeVMEMetaObjectEndpoint::vmecallback(QDeclarativeNotifierEndpoint void QDeclarativeVMEMetaObjectEndpoint::tryConnect() { - if (metaObject.flag()) - return; - int aliasId = this - metaObject->aliasEndpoints; - QDeclarativeVMEMetaData::AliasData *d = metaObject->metaData->aliasData() + aliasId; - if (!d->isObjectAlias()) { - QDeclarativeContextData *ctxt = metaObject->ctxt; - QObject *target = ctxt->idValues[d->contextIdx].data(); - if (!target) - return; - - QMetaProperty prop = target->metaObject()->property(d->propertyIndex()); - if (prop.hasNotifySignal()) { - int sigIdx = metaObject->methodOffset + aliasId + metaObject->metaData->propertyCount; - QDeclarativePropertyPrivate::connect(target, prop.notifySignalIndex(), - metaObject->object, sigIdx); + if (metaObject.flag()) { + // This is actually notify + int sigIdx = metaObject->methodOffset + aliasId + metaObject->metaData->propertyCount; + QMetaObject::activate(metaObject->object, sigIdx, 0); + } else { + QDeclarativeVMEMetaData::AliasData *d = metaObject->metaData->aliasData() + aliasId; + if (!d->isObjectAlias()) { + QDeclarativeContextData *ctxt = metaObject->ctxt; + QObject *target = ctxt->idValues[d->contextIdx].data(); + if (!target) + return; + + QMetaProperty prop = target->metaObject()->property(d->propertyIndex()); + if (prop.hasNotifySignal()) + connect(target, prop.notifySignalIndex()); } - } - metaObject.setFlag(); + metaObject.setFlag(); + } } QDeclarativeVMEMetaObject::QDeclarativeVMEMetaObject(QObject *obj, |