diff --git a/share/qtcreator/qmldesigner/materialBrowserQmlSource/MaterialBrowser.qml b/share/qtcreator/qmldesigner/materialBrowserQmlSource/MaterialBrowser.qml index 9edc5019769..9a9cb26f791 100644 --- a/share/qtcreator/qmldesigner/materialBrowserQmlSource/MaterialBrowser.qml +++ b/share/qtcreator/qmldesigner/materialBrowserQmlSource/MaterialBrowser.qml @@ -35,6 +35,17 @@ Item { searchBox.clear(); } + MouseArea { + id: focusGrabber + anchors.fill: parent + acceptedButtons: Qt.LeftButton | Qt.RightButton + onPressed: (mouse) => { + forceActiveFocus() // Steal focus from name edit + mouse.accepted = false + } + z: 1 + } + MouseArea { id: rootMouseArea diff --git a/share/qtcreator/qmldesigner/materialBrowserQmlSource/MaterialItem.qml b/share/qtcreator/qmldesigner/materialBrowserQmlSource/MaterialItem.qml index 71ac8911235..6eaf0351d2f 100644 --- a/share/qtcreator/qmldesigner/materialBrowserQmlSource/MaterialItem.qml +++ b/share/qtcreator/qmldesigner/materialBrowserQmlSource/MaterialItem.qml @@ -23,6 +23,7 @@ Rectangle { matName.readOnly = false matName.selectAll() matName.forceActiveFocus() + matName.ensureVisible(matName.text.length) nameMouseArea.enabled = false } @@ -31,10 +32,8 @@ Rectangle { if (matName.readOnly) return; - matName.readOnly = true - nameMouseArea.enabled = true - materialBrowserModel.renameMaterial(index, matName.text); + mouseArea.forceActiveFocus() } border.width: materialBrowserModel.selectedIndex === index ? 1 : 0 @@ -102,6 +101,16 @@ Rectangle { onEditingFinished: root.commitRename() + onActiveFocusChanged: { + if (!activeFocus) { + matName.readOnly = true + nameMouseArea.enabled = true + ensureVisible(0) + } + } + + Component.onCompleted: ensureVisible(0) + MouseArea { id: nameMouseArea diff --git a/src/plugins/qmldesigner/components/materialeditor/materialeditorview.cpp b/src/plugins/qmldesigner/components/materialeditor/materialeditorview.cpp index 39d036f6772..58bb81434fb 100644 --- a/src/plugins/qmldesigner/components/materialeditor/materialeditorview.cpp +++ b/src/plugins/qmldesigner/components/materialeditor/materialeditorview.cpp @@ -998,6 +998,10 @@ void MaterialEditorView::renameMaterial(ModelNode &material, const QString &newN { QTC_ASSERT(material.isValid(), return); + QVariant objName = material.variantProperty("objectName").value(); + if (objName.isValid() && objName.toString() == newName) + return; + executeInTransaction("MaterialEditorView:renameMaterial", [&] { material.setIdWithRefactoring(model()->generateIdFromName(newName, "material"));