aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Gruendl <henning.gruendl@qt.io>2021-12-10 14:15:19 +0100
committerHenning Gründl <henning.gruendl@qt.io>2021-12-13 09:26:29 +0000
commit70b3a11ebbe11e4e3818de8a695301a92509f775 (patch)
tree52ae21cd716cc93d9700a4e4bdb7b875af816c39
parentf03f71279109b9c132bf52e53acdcbf0f47fc6af (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.cpp31
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