diff --git a/src/plugins/qmldesigner/designercore/model/model.cpp b/src/plugins/qmldesigner/designercore/model/model.cpp index 72e8585f7d4bcaf845bdd0d3ccc0a1ccf5e7f0f4..e80286fc60681f56c4ab95c0abcc774a565b52d3 100644 --- a/src/plugins/qmldesigner/designercore/model/model.cpp +++ b/src/plugins/qmldesigner/designercore/model/model.cpp @@ -1898,12 +1898,12 @@ const MetaInfo Model::metaInfo() const bool Model::hasNodeMetaInfo(const QString &typeName, int majorVersion, int minorVersion) { - return NodeMetaInfo(this, typeName, majorVersion, minorVersion).isValid(); + return NodeMetaInfo(metaInfoProxyModel(), typeName, majorVersion, minorVersion).isValid(); } NodeMetaInfo Model::metaInfo(const QString &typeName, int majorVersion, int minorVersion) { - return NodeMetaInfo(this, typeName, majorVersion, minorVersion); + return NodeMetaInfo(metaInfoProxyModel(), typeName, majorVersion, minorVersion); } /*! diff --git a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp index d3dd08a2b0bda5f3a39710967101fe7ad44eb383..e3cafdab66e4d5a44666c5d9cb71fe1462ae3368 100644 --- a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp +++ b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp @@ -284,9 +284,9 @@ static bool isPropertyChangesType(const QString &type) return type == QLatin1String("PropertyChanges") || type == QLatin1String("QtQuick.PropertyChanges") || type == QLatin1String("Qt.PropertyChanges"); } -static bool propertyIsComponentType(const QmlDesigner::NodeAbstractProperty &property, const QString &type) +static bool propertyIsComponentType(const QmlDesigner::NodeAbstractProperty &property, const QString &type, QmlDesigner::Model *model) { - if (property.parentModelNode().model()->metaInfo(type, -1, -1).isSubclassOf(QLatin1String("QtQuick.Component"), -1, -1) && !isComponentType(type)) { + if (model->metaInfo(type, -1, -1).isSubclassOf(QLatin1String("QtQuick.Component"), -1, -1) && !isComponentType(type)) { return false; //If the type is already a subclass of Component keep it } @@ -770,9 +770,10 @@ bool TextToModelMerger::load(const QString &data, DifferenceHandler &differenceH if (view()->checkSemanticErrors()) { Check check(doc, m_lookupContext->context()); check.setOptions(check.options() & ~Check::ErrCheckTypeErrors); - foreach (const QmlJS::DiagnosticMessage &diagnosticMessage, check()) + foreach (const QmlJS::DiagnosticMessage &diagnosticMessage, check()) { if (diagnosticMessage.isError()) errors.append(RewriterView::Error(diagnosticMessage, QUrl::fromLocalFile(doc->fileName()))); + } if (!errors.isEmpty()) { m_rewriterView->setErrors(errors); @@ -838,7 +839,7 @@ void TextToModelMerger::syncNode(ModelNode &modelNode, return; } - bool isImplicitComponent = modelNode.parentProperty().isValid() && propertyIsComponentType(modelNode.parentProperty(), typeName); + bool isImplicitComponent = modelNode.parentProperty().isValid() && propertyIsComponentType(modelNode.parentProperty(), typeName, modelNode.model()); if (modelNode.type() != typeName //If there is no valid parentProperty //the node has just been created. The type is correct then. @@ -1457,7 +1458,7 @@ void ModelAmender::shouldBeNodeProperty(AbstractProperty &modelProperty, ModelNode theNode = modelProperty.parentModelNode(); NodeProperty newNodeProperty = theNode.nodeProperty(modelProperty.name()); - const bool propertyTakesComponent = propertyIsComponentType(newNodeProperty, typeName); + const bool propertyTakesComponent = propertyIsComponentType(newNodeProperty, typeName, theNode.model()); const ModelNode &newNode = m_merger->createModelNode(typeName, majorVersion, @@ -1506,7 +1507,7 @@ ModelNode ModelAmender::listPropertyMissingModelNode(NodeListProperty &modelProp return ModelNode(); } - const bool propertyTakesComponent = propertyIsComponentType(modelProperty, typeName); + const bool propertyTakesComponent = propertyIsComponentType(modelProperty, typeName, m_merger->view()->model()); const ModelNode &newNode = m_merger->createModelNode(typeName, @@ -1542,7 +1543,7 @@ void ModelAmender::typeDiffers(bool isRootNode, QmlJS::AST::UiObjectMember *astNode, ReadingContext *context) { - const bool propertyTakesComponent = propertyIsComponentType(modelNode.parentProperty(), typeName); + const bool propertyTakesComponent = propertyIsComponentType(modelNode.parentProperty(), typeName, modelNode.model()); if (isRootNode) { modelNode.view()->changeRootNodeType(typeName, majorVersion, minorVersion);