diff options
Diffstat (limited to 'src/qml/qml/qqmltypewrapper.cpp')
-rw-r--r-- | src/qml/qml/qqmltypewrapper.cpp | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/src/qml/qml/qqmltypewrapper.cpp b/src/qml/qml/qqmltypewrapper.cpp index 7270cffb00..144d077c44 100644 --- a/src/qml/qml/qqmltypewrapper.cpp +++ b/src/qml/qml/qqmltypewrapper.cpp @@ -350,15 +350,18 @@ bool QQmlTypeWrapper::put(Managed *m, StringOrSymbol *n, const Value &value) return false; } -PropertyAttributes QQmlTypeWrapper::query(const Managed *m, StringOrSymbol *name) +PropertyAttributes QQmlTypeWrapper::getOwnProperty(Managed *m, Identifier id, Property *p) { - if (name->isSymbol()) - return Object::query(m, name); - String *n = static_cast<String *>(name); - // ### Implement more efficiently. - bool hasProperty = false; - static_cast<Object *>(const_cast<Managed*>(m))->get(n, &hasProperty); - return hasProperty ? Attr_Data : Attr_Invalid; + if (id.isString()) { + Scope scope(m); + ScopedString n(scope, id.asHeapObject()); + // ### Implement more efficiently. + bool hasProperty = false; + static_cast<Object *>(m)->get(n, &hasProperty); + return hasProperty ? Attr_Data : Attr_Invalid; + } + + return QV4::Object::getOwnProperty(m, id, p); } bool QQmlTypeWrapper::isEqualTo(Managed *a, Managed *b) |