diff options
author | Michael Brasser <mbrasser@ford.com> | 2018-10-25 12:50:19 -0500 |
---|---|---|
committer | Jani Heikkinen <jani.heikkinen@qt.io> | 2018-10-31 08:21:24 +0000 |
commit | f46f8745053208e4a86fa65e039179b85d5c317b (patch) | |
tree | c397ffeb8394d010eef39c2605983e4b124895a7 /src/qml/qml/qqmltypewrapper.cpp | |
parent | 3a614b1c2e78de04b32a957414f5a8d4dd0e07b1 (diff) |
Fix issues with lookup of scoped enums on Singletons
Change-Id: Id6cd0b7c571b38db30bded030f6927c9b5fbdb96
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'src/qml/qml/qqmltypewrapper.cpp')
-rw-r--r-- | src/qml/qml/qqmltypewrapper.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/qml/qml/qqmltypewrapper.cpp b/src/qml/qml/qqmltypewrapper.cpp index b58619c0d3..4089a7f030 100644 --- a/src/qml/qml/qqmltypewrapper.cpp +++ b/src/qml/qml/qqmltypewrapper.cpp @@ -203,9 +203,18 @@ ReturnedValue QQmlTypeWrapper::virtualGet(const Managed *m, PropertyKey id, cons const bool includeEnums = w->d()->mode == Heap::QQmlTypeWrapper::IncludeEnums; if (includeEnums && name->startsWithUpper()) { bool ok = false; - const int value = enumForSingleton(v4, name, qobjectSingleton, type, &ok); + int value = enumForSingleton(v4, name, qobjectSingleton, type, &ok); if (ok) return QV4::Value::fromInt32(value).asReturnedValue(); + + value = type.scopedEnumIndex(QQmlEnginePrivate::get(v4->qmlEngine()), name, &ok); + if (ok) { + Scoped<QQmlScopedEnumWrapper> enumWrapper(scope, v4->memoryManager->allocate<QQmlScopedEnumWrapper>()); + enumWrapper->d()->typePrivate = type.priv(); + QQmlType::refHandle(enumWrapper->d()->typePrivate); + enumWrapper->d()->scopeEnumIndex = value; + return enumWrapper.asReturnedValue(); + } } // check for property. |