From 8f0cdd41d5d7f3cebe04be617ae8360b914bb365 Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Tue, 1 Feb 2011 18:36:00 +0100 Subject: [PATCH] QmlDesigner.MetaInfo: Don't put unkown objects in the superclass stack --- .../designercore/metainfo/nodemetainfo.cpp | 36 +++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) 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); - } } } -- 2.11.0