diff options
author | Simon Hausmann <simon.hausmann@digia.com> | 2014-01-31 09:26:16 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-02-03 14:37:58 +0100 |
commit | 24a3c947f7e1c63a2389e0680e470b9f493b3cc6 (patch) | |
tree | 64cebb7d638b3b583493404c48d07fea27022b30 /src/qml/qml/qqmlobjectcreator.cpp | |
parent | 26e18f978a4fede91e783e697d32bef472db1d00 (diff) |
[new compiler] Fix signal handlers that are fuzzily matched
Use the same logic at object creation time as during the signal handler
conversion phase.
Change-Id: Idb48a3849da7b6543ec50c15e1ccbf2939c3ee39
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Diffstat (limited to 'src/qml/qml/qqmlobjectcreator.cpp')
-rw-r--r-- | src/qml/qml/qqmlobjectcreator.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/qml/qml/qqmlobjectcreator.cpp b/src/qml/qml/qqmlobjectcreator.cpp index 0c2b4a8bc4..0c515714a8 100644 --- a/src/qml/qml/qqmlobjectcreator.cpp +++ b/src/qml/qml/qqmlobjectcreator.cpp @@ -531,9 +531,13 @@ void QmlObjectCreator::setupBindings() property = 0; if (!property || (i > 0 && (binding - 1)->propertyNameIndex != binding->propertyNameIndex)) { - if (!name.isEmpty()) - property = _propertyCache->property(name, _qobject, context); - else + if (!name.isEmpty()) { + if (binding->flags & QV4::CompiledData::Binding::IsSignalHandlerExpression + || binding->flags & QV4::CompiledData::Binding::IsSignalHandlerObject) + property = PropertyResolver(_propertyCache).signal(name, /*notInRevision*/0, _qobject, context); + else + property = _propertyCache->property(name, _qobject, context); + } else property = defaultProperty; if (property && property->isQList()) { |