diff options
author | Thomas Hartmann <Thomas.Hartmann@nokia.com> | 2011-07-13 14:50:49 +0200 |
---|---|---|
committer | Thomas Hartmann <Thomas.Hartmann@nokia.com> | 2011-07-14 12:04:11 +0200 |
commit | 982f1552df2a270fefa49688657937be59ed47d3 (patch) | |
tree | 3b1ca960cffbb5427c79ac8ee84476f56615dbb4 /src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp | |
parent | 98a4f9ae71a0997874b06fa53d481bec2b6f8dfb (diff) | |
download | qt-creator-982f1552df2a270fefa49688657937be59ed47d3.tar.gz |
QmlDesigner.metaInfo: fixes a regression
I cannot just take the highest available version.
We have to determine the correct version from the import.
I added fullQualifiedImportAliasType for convinience.
Change-Id: I4cc8049b6224fa168f2530b0dfb41b6f2e515c19
Reviewed-on: http://codereview.qt.nokia.com/1589
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Christian Kamm <christian.d.kamm@nokia.com>
Reviewed-by: Thomas Hartmann <Thomas.Hartmann@nokia.com>
Diffstat (limited to 'src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp')
-rw-r--r-- | src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp b/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp index a8d5ad30dd..5949cd4e90 100644 --- a/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp +++ b/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp @@ -365,6 +365,7 @@ private: QString lookupName() const; QStringList lookupNameComponent() const; const QmlJS::Interpreter::QmlObjectValue *getNearestQmlObjectValue() const; + QString fullQualifiedImportAliasType() const; QString m_qualfiedTypeName; int m_majorVersion; @@ -486,7 +487,16 @@ const QmlJS::Interpreter::QmlObjectValue *NodeMetaInfoPrivate::getQmlObjectValue const QString package = getUrlFromType(m_qualfiedTypeName); const QString type = m_qualfiedTypeName.split('.').last(); + LanguageUtils::ComponentVersion version(9999, 9999); + //get the correct version + Document::Ptr doc = lookupContext()->document(); + const Interpreter::Context *context = lookupContext()->context(); + Interpreter::ImportInfo importInfo = context->imports(doc.data())->info(fullQualifiedImportAliasType(), context); + + if (importInfo.isValid()) + version = importInfo.version(); + QList<Interpreter::QmlObjectValue *> qmlObjectValues = lookupContext()->engine()->cppQmlTypes().typesForImport(package, version); const Interpreter::QmlObjectValue *qmlValue = 0; foreach (Interpreter::QmlObjectValue *value, qmlObjectValues) { @@ -832,14 +842,11 @@ QString NodeMetaInfoPrivate::lookupName() const QStringList NodeMetaInfoPrivate::lookupNameComponent() const { - if (m_model && m_model->rewriterView()) { - QString tempString = model()->rewriterView()->convertTypeToImportAlias(m_qualfiedTypeName); - + QString tempString = fullQualifiedImportAliasType(); return tempString.split('.'); - } - return QStringList(); } + bool NodeMetaInfoPrivate::isValid() const { return m_isValid && lookupContext() && document(); @@ -890,6 +897,13 @@ const QmlJS::Interpreter::QmlObjectValue *NodeMetaInfoPrivate::getNearestQmlObje return getQmlObjectValue(); } +QString NodeMetaInfoPrivate::fullQualifiedImportAliasType() const +{ + if (m_model && m_model->rewriterView()) + return model()->rewriterView()->convertTypeToImportAlias(m_qualfiedTypeName); + return m_qualfiedTypeName; +} + } //namespace Internal NodeMetaInfo::NodeMetaInfo() : m_privateData(new Internal::NodeMetaInfoPrivate()) |