diff --git a/radiant/ui/materials/editor/MaterialEditor.cpp b/radiant/ui/materials/editor/MaterialEditor.cpp index 1fe4e24edc..f30ad56e29 100644 --- a/radiant/ui/materials/editor/MaterialEditor.cpp +++ b/radiant/ui/materials/editor/MaterialEditor.cpp @@ -324,6 +324,9 @@ void MaterialEditor::setupBasicMaterialPage() convertTextCtrlToMapExpressionEntry("BasicBumpImageEntry"); convertTextCtrlToMapExpressionEntry("BasicSpecularImageEntry"); + auto nameEntry = getControl("BasicName"); + nameEntry->Bind(wxEVT_TEXT, &MaterialEditor::_onMaterialNameChanged, this); + auto editorImageEntry = getControl("BasicEditorImageEntry")->GetTextCtrl(); editorImageEntry->Bind(wxEVT_TEXT, [this, editorImageEntry](wxCommandEvent&) { @@ -390,15 +393,7 @@ void MaterialEditor::setupMaterialProperties() convertTextCtrlToMapExpressionEntry("MaterialEditorImage"); auto nameEntry = getControl("MaterialName"); - nameEntry->Bind(wxEVT_TEXT, [nameEntry, this](wxCommandEvent& ev) - { - if (_materialUpdateInProgress || !_material) return; - - GlobalMaterialManager().renameMaterial(_material->getName(), nameEntry->GetValue().ToStdString()); - auto item = _treeView->GetTreeModel()->FindString(_material->getName(), _treeView->Columns().fullName); - _treeView->EnsureVisible(item); - onMaterialChanged(); - }); + nameEntry->Bind(wxEVT_TEXT, &MaterialEditor::_onMaterialNameChanged, this); auto editorImage = getControl("MaterialEditorImage"); _materialBindings.emplace(std::make_shared>(editorImage->GetTextCtrl(), @@ -1315,6 +1310,20 @@ void MaterialEditor::handleMaterialSelectionChange() updateControlsFromMaterial(); } +void MaterialEditor::_onMaterialNameChanged(wxCommandEvent& ev) +{ + if (_materialUpdateInProgress || !_material) return; + + auto nameEntry = static_cast(ev.GetEventObject()); + + GlobalMaterialManager().renameMaterial(_material->getName(), nameEntry->GetValue().ToStdString()); + auto item = _treeView->GetTreeModel()->FindString(_material->getName(), _treeView->Columns().fullName); + _treeView->EnsureVisible(item); + + updateMaterialPropertiesFromMaterial(); + onMaterialChanged(); +} + void MaterialEditor::_onMaterialSelectionChanged(wxDataViewEvent& ev) { // Check if the material has been modified and ask for save diff --git a/radiant/ui/materials/editor/MaterialEditor.h b/radiant/ui/materials/editor/MaterialEditor.h index bbb6e33899..2c88148dfd 100644 --- a/radiant/ui/materials/editor/MaterialEditor.h +++ b/radiant/ui/materials/editor/MaterialEditor.h @@ -158,6 +158,7 @@ class MaterialEditor : void revertCurrentMaterial(); void copySelectedMaterial(); + void _onMaterialNameChanged(wxCommandEvent& ev); void _onMaterialSelectionChanged(wxDataViewEvent& ev); void _onNewMaterial(wxCommandEvent& ev); void _onSaveMaterial(wxCommandEvent& ev);