forked from qt-creator/qt-creator
QmlDesigner: Validate the id for texture before setting it
* Also updates the texture id when it's changed from another view Fixes: QDS-12992 Fixes: QDS-12995 Change-Id: Iee39feff5e1790b507d908664ad551db33a9b61d Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io> Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
This commit is contained in:
@@ -82,6 +82,8 @@ Item {
|
||||
width: img.width
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
|
||||
validator: RegularExpressionValidator { regularExpression: /(^$|^[a-z_]\w*$)/ }
|
||||
|
||||
onRenamed: (newId) => {
|
||||
MaterialBrowserBackend.materialBrowserTexturesModel.setTextureId(index, newId);
|
||||
mouseArea.forceActiveFocus()
|
||||
|
@@ -206,6 +206,13 @@ void MaterialBrowserTexturesModel::updateTextureSource(const ModelNode &texture)
|
||||
emit dataChanged(index(idx, 0), index(idx, 0), {RoleTexSource, RoleTexToolTip});
|
||||
}
|
||||
|
||||
void MaterialBrowserTexturesModel::updateTextureId(const ModelNode &texture)
|
||||
{
|
||||
int idx = textureIndex(texture);
|
||||
if (idx != -1)
|
||||
emit dataChanged(index(idx, 0), index(idx, 0), {RoleTexId, RoleTexSource, RoleTexToolTip});
|
||||
}
|
||||
|
||||
void MaterialBrowserTexturesModel::updateAllTexturesSources()
|
||||
{
|
||||
emit dataChanged(index(0, 0), index(rowCount() - 1, 0), {RoleTexSource, RoleTexToolTip});
|
||||
@@ -314,8 +321,13 @@ void MaterialBrowserTexturesModel::setTextureId(int idx, const QString &newId)
|
||||
return;
|
||||
|
||||
if (node.id() != newId) {
|
||||
node.setIdWithRefactoring(newId);
|
||||
emit dataChanged(index(idx, 0), index(idx, 0), {RoleTexId});
|
||||
QString nodeId;
|
||||
if (!newId.isEmpty()) {
|
||||
const auto model = m_view->model();
|
||||
QTC_ASSERT(model, return);
|
||||
nodeId = model->generateNewId(newId);
|
||||
}
|
||||
node.setIdWithRefactoring(nodeId);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -38,6 +38,7 @@ public:
|
||||
void deleteSelectedTexture();
|
||||
void updateSelectedTexture();
|
||||
void updateTextureSource(const ModelNode &texture);
|
||||
void updateTextureId(const ModelNode &texture);
|
||||
void updateAllTexturesSources();
|
||||
int textureIndex(const ModelNode &texture) const;
|
||||
ModelNode textureAt(int idx) const;
|
||||
|
@@ -373,7 +373,7 @@ void MaterialBrowserView::nodeIdChanged(const ModelNode &node, [[maybe_unused]]
|
||||
[[maybe_unused]] const QString &oldId)
|
||||
{
|
||||
if (isTexture(node))
|
||||
m_widget->materialBrowserTexturesModel()->updateTextureSource(node);
|
||||
m_widget->materialBrowserTexturesModel()->updateTextureId(node);
|
||||
}
|
||||
|
||||
void MaterialBrowserView::variantPropertiesChanged(const QList<VariantProperty> &propertyList,
|
||||
|
Reference in New Issue
Block a user