diff options
Diffstat (limited to 'src/plugins/qmldesigner/components/propertyeditor/propertyeditorqmlbackend.cpp')
-rw-r--r-- | src/plugins/qmldesigner/components/propertyeditor/propertyeditorqmlbackend.cpp | 30 |
1 files changed, 23 insertions, 7 deletions
diff --git a/src/plugins/qmldesigner/components/propertyeditor/propertyeditorqmlbackend.cpp b/src/plugins/qmldesigner/components/propertyeditor/propertyeditorqmlbackend.cpp index 41cdb431b8..909530dbc3 100644 --- a/src/plugins/qmldesigner/components/propertyeditor/propertyeditorqmlbackend.cpp +++ b/src/plugins/qmldesigner/components/propertyeditor/propertyeditorqmlbackend.cpp @@ -365,6 +365,13 @@ void PropertyEditorQmlBackend::setValue(const QmlObjectNode & , const PropertyNa } } +void PropertyEditorQmlBackend::setExpression(const PropertyName &propName, const QString &exp) +{ + PropertyEditorValue *propertyValue = propertyValueForName(QString::fromUtf8(propName)); + if (propertyValue) + propertyValue->setExpression(exp); +} + QQmlContext *PropertyEditorQmlBackend::context() { return m_view->rootContext(); } @@ -373,7 +380,7 @@ PropertyEditorContextObject* PropertyEditorQmlBackend::contextObject() { return m_contextObject.data(); } -QWidget *PropertyEditorQmlBackend::widget() { +QQuickWidget *PropertyEditorQmlBackend::widget() { return m_view; } @@ -637,7 +644,7 @@ QString PropertyEditorQmlBackend::templateGeneration(const NodeMetaInfo &metaTyp if (!superType.hasProperty(propertyName) // TODO add property.isLocalProperty() && property.isWritable() && dotPropertyHeuristic(node, metaType, propertyName)) { - QString typeName = QString::fromUtf8(property.propertyType().typeName()); + QString typeName = QString::fromUtf8(property.propertyType().simplifiedTypeName()); if (typeName == "alias" && node.isValid()) typeName = QString::fromUtf8(node.instanceType(propertyName)); @@ -649,10 +656,19 @@ QString PropertyEditorQmlBackend::templateGeneration(const NodeMetaInfo &metaTyp } else { if (propertyName.contains('.')) { const PropertyName parentPropertyName = propertyName.split('.').first(); - const PropertyMetaInfo parentProperty = metaType.property( - parentPropertyName); + const PropertyMetaInfo parentProperty = metaType.property(parentPropertyName); + + auto vectorFound = std::find(separateSectionProperties.begin(), + separateSectionProperties.end(), + parentProperty); + + auto propertyMapFound = propertyMap.find(parentProperty); + + const bool exists = propertyMapFound != propertyMap.end() + || vectorFound != separateSectionProperties.end(); - propertyMap[parentProperty].push_back(property); + if (!exists) + propertyMap[parentProperty].push_back(property); } else { propertyMap[property]; } @@ -681,7 +697,7 @@ QString PropertyEditorQmlBackend::templateGeneration(const NodeMetaInfo &metaTyp PropertyName underscoreProperty = propertyName; underscoreProperty.replace('.', '_'); - TypeName typeName = property.propertyType().typeName(); + TypeName typeName = property.propertyType().simplifiedTypeName(); // alias resolution only possible with instance if (!useProjectStorage() && typeName == "alias" && node.isValid()) typeName = node.instanceType(propertyName); @@ -757,7 +773,7 @@ QString PropertyEditorQmlBackend::templateGeneration(const NodeMetaInfo &metaTyp emptyTemplate = false; for (auto &[property, properties] : propertyMap) { // for (auto it = propertyMap.cbegin(); it != propertyMap.cend(); ++it) { - TypeName parentTypeName = property.propertyType().typeName(); + TypeName parentTypeName = property.propertyType().simplifiedTypeName(); // alias resolution only possible with instance if (!useProjectStorage() && parentTypeName == "alias" && node.isValid()) parentTypeName = node.instanceType(property.name()); |