diff options
author | Thomas Hartmann <Thomas.Hartmann@digia.com> | 2014-01-14 14:12:55 +0100 |
---|---|---|
committer | Thomas Hartmann <Thomas.Hartmann@digia.com> | 2014-01-14 15:04:48 +0100 |
commit | ad900e177a6f2e39806f426b0ebd84a760f59ca4 (patch) | |
tree | 6e95c55264424d0b327e5719000dc849db6087c8 /src | |
parent | b0c5380d556516dc238d0eb26fa1377cf62ed81c (diff) |
QmlDesigner.MetaInfo: Properly resolve prototypes from different plugins
If there is a non <cpp> export for the CppComponentValue
we use it.
Task-number: QTCREATORBUG-11205
Change-Id: Ia82c8fc5f567245f5d04b0fd91819bf443312e17
Reviewed-by: Fawzi Mohamed <fawzi.mohamed@digia.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp b/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp index b8b61ceb2b..10365f73a7 100644 --- a/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp +++ b/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp @@ -1031,12 +1031,27 @@ void NodeMetaInfoPrivate::setupPrototypes() description.majorVersion = qmlValue->componentVersion().majorVersion(); LanguageUtils::FakeMetaObject::Export qtquickExport = qmlValue->metaObject()->exportInPackage("QtQuick"); LanguageUtils::FakeMetaObject::Export cppExport = qmlValue->metaObject()->exportInPackage("<cpp>"); - if (qtquickExport.isValid()) + + if (qtquickExport.isValid()) { description.className = qtquickExport.package.toUtf8() + '.' + qtquickExport.type.toUtf8(); - else if (qmlValue->moduleName().isEmpty() && cppExport.isValid()) - description.className = cppExport.package.toUtf8() + '.' + cppExport.type.toUtf8(); - else if (!qmlValue->moduleName().isEmpty()) - description.className = qmlValue->moduleName().toUtf8() + '.' + description.className; + } else { + bool found = false; + if (cppExport.isValid()) { + foreach (const LanguageUtils::FakeMetaObject::Export &exportValue, qmlValue->metaObject()->exports()) { + if (exportValue.package.toUtf8() != "<cpp>") { + found = true; + description.className = exportValue.package.toUtf8() + '.' + exportValue.type.toUtf8(); + } + } + } + if (!found) { + if (qmlValue->moduleName().isEmpty() && cppExport.isValid()) { + description.className = cppExport.package.toUtf8() + '.' + cppExport.type.toUtf8(); + } else if (!qmlValue->moduleName().isEmpty()) { + description.className = qmlValue->moduleName().toUtf8() + '.' + description.className; + } + } + } m_prototypes.append(description); } else { if (context()->lookupType(document(), QStringList() << ov->className())) { |