From: Marco Bubke Date: Tue, 1 Feb 2011 17:36:00 +0000 (+0100) Subject: QmlDesigner.MetaInfo: Don't put unkown objects in the superclass stack X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=8f0cdd41d5d7f3cebe04be617ae8360b914bb365;p=qt-creator-jp%2Fqt-creator-jp.git QmlDesigner.MetaInfo: Don't put unkown objects in the superclass stack --- diff --git a/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp b/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp index 888c538995..6be92be365 100644 --- a/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp +++ b/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp @@ -128,6 +128,37 @@ private: QList m_properties; }; + +class HasValueProcessor : public Interpreter::MemberProcessor +{ +public: + HasValueProcessor(const Interpreter::Value *compareValue) + : MemberProcessor(), + m_compareValue(compareValue), + m_isInMembers(false) + {} + + virtual bool processProperty(const QString &/*name*/, const Interpreter::Value *value) + { + if (value == m_compareValue) { + m_isInMembers = true; + return false; + } + + return true; + } + + bool hasValue() const + { + return m_isInMembers; + } + +private: + const Interpreter::Value *m_compareValue; + bool m_isInMembers; +}; + + static inline bool isValueType(const QString &type) { QStringList objectValuesList; @@ -792,9 +823,12 @@ void NodeMetaInfoPrivate::setupPrototypes() description.majorVersion = qmlValue->version().majorVersion(); if (!qmlValue->packageName().isEmpty()) description.className = qmlValue->packageName() + "/" + description.className; + } + HasValueProcessor hasValueProcessor(ov); + lookupContext()->context()->typeEnvironment(document())->processMembers(&hasValueProcessor); + if (hasValueProcessor.hasValue()) m_prototypes.append(description); - } } }