diff options
author | Henning Gruendl <henning.gruendl@qt.io> | 2021-12-10 14:15:19 +0100 |
---|---|---|
committer | Henning Gründl <henning.gruendl@qt.io> | 2021-12-13 09:26:29 +0000 |
commit | 70b3a11ebbe11e4e3818de8a695301a92509f775 (patch) | |
tree | 52ae21cd716cc93d9700a4e4bdb7b875af816c39 | |
parent | f03f71279109b9c132bf52e53acdcbf0f47fc6af (diff) |
QmlDesigner: Remove url properties on reset
Remove url properties like source from the model node when being
reset.
Change-Id: I90fd0bbf6ac7aeb375a744f2e932949e17404878
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
-rw-r--r-- | src/plugins/qmldesigner/components/propertyeditor/propertyeditorview.cpp | 31 |
1 files changed, 18 insertions, 13 deletions
diff --git a/src/plugins/qmldesigner/components/propertyeditor/propertyeditorview.cpp b/src/plugins/qmldesigner/components/propertyeditor/propertyeditorview.cpp index a647b65358..3bdfb903c8 100644 --- a/src/plugins/qmldesigner/components/propertyeditor/propertyeditorview.cpp +++ b/src/plugins/qmldesigner/components/propertyeditor/propertyeditorview.cpp @@ -165,9 +165,9 @@ void PropertyEditorView::changeValue(const QString &name) m_locked = false; QString errMsg = QmlDesigner::ModelNode::getIdValidityErrorMessage(newId); if (!errMsg.isEmpty()) - Core::AsynchronousMessageBox::warning(tr("Invalid ID"), errMsg); + Core::AsynchronousMessageBox::warning(tr("Invalid ID"), errMsg); else - Core::AsynchronousMessageBox::warning(tr("Invalid ID"), tr("%1 already exists.").arg(newId)); + Core::AsynchronousMessageBox::warning(tr("Invalid ID"), tr("%1 already exists.").arg(newId)); } return; } @@ -176,24 +176,24 @@ void PropertyEditorView::changeValue(const QString &name) underscoreName.replace('.', '_'); PropertyEditorValue *value = m_qmlBackEndForCurrentType->propertyValueForName(QString::fromLatin1(underscoreName)); - if (value ==nullptr) + if (value == nullptr) return; - if (propertyName.endsWith( "__AUX")) { + if (propertyName.endsWith("__AUX")) { commitAuxValueToModel(propertyName, value->value()); return; } - QmlObjectNode qmlObjectNode(m_selectedNode); + const NodeMetaInfo metaInfo = QmlObjectNode(m_selectedNode).modelNode().metaInfo(); QVariant castedValue; - if (qmlObjectNode.modelNode().metaInfo().isValid() && qmlObjectNode.modelNode().metaInfo().hasProperty(propertyName)) { - castedValue = qmlObjectNode.modelNode().metaInfo().propertyCastedValue(propertyName, value->value()); + if (metaInfo.isValid() && metaInfo.hasProperty(propertyName)) { + castedValue = metaInfo.propertyCastedValue(propertyName, value->value()); } else if (propertyIsAttachedLayoutProperty(propertyName)) { castedValue = value->value(); } else { - qWarning() << "PropertyEditor:" <<propertyName << "cannot be casted (metainfo)"; + qWarning() << "PropertyEditor:" << propertyName << "cannot be casted (metainfo)"; return ; } @@ -202,10 +202,14 @@ void PropertyEditorView::changeValue(const QString &name) return ; } - if (qmlObjectNode.modelNode().metaInfo().isValid() && qmlObjectNode.modelNode().metaInfo().hasProperty(propertyName)) { - if (qmlObjectNode.modelNode().metaInfo().propertyTypeName(propertyName) == "QUrl" - || qmlObjectNode.modelNode().metaInfo().propertyTypeName(propertyName) == "url") { //turn absolute local file paths into relative paths - QString filePath = castedValue.toUrl().toString(); + bool propertyTypeUrl = false; + + if (metaInfo.isValid() && metaInfo.hasProperty(propertyName)) { + if (metaInfo.propertyTypeName(propertyName) == "QUrl" + || metaInfo.propertyTypeName(propertyName) == "url") { + // turn absolute local file paths into relative paths + propertyTypeUrl = true; + QString filePath = castedValue.toUrl().toString(); QFileInfo fi(filePath); if (fi.exists() && fi.isAbsolute()) { QDir fileDir(QFileInfo(model()->fileUrl().toLocalFile()).absolutePath()); @@ -224,7 +228,8 @@ void PropertyEditorView::changeValue(const QString &name) castedValue = QVariant(newColor); } - if (!value->value().isValid()) { //reset + if (!value->value().isValid() + || (propertyTypeUrl && value->value().toString().isEmpty())) { // reset removePropertyFromModel(propertyName); } else { // QVector*D(0, 0, 0) detects as null variant though it is valid value |