aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/qml/qqmlobjectcreator.cpp
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@digia.com>2014-01-31 09:26:16 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-02-03 14:37:58 +0100
commit24a3c947f7e1c63a2389e0680e470b9f493b3cc6 (patch)
tree64cebb7d638b3b583493404c48d07fea27022b30 /src/qml/qml/qqmlobjectcreator.cpp
parent26e18f978a4fede91e783e697d32bef472db1d00 (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.cpp10
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()) {