aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorThomas Hartmann <Thomas.Hartmann@digia.com>2014-01-14 14:12:55 +0100
committerThomas Hartmann <Thomas.Hartmann@digia.com>2014-01-14 15:04:48 +0100
commitad900e177a6f2e39806f426b0ebd84a760f59ca4 (patch)
tree6e95c55264424d0b327e5719000dc849db6087c8 /src
parentb0c5380d556516dc238d0eb26fa1377cf62ed81c (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.cpp25
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())) {