From 2f697926b0aac7fd59fd5bd0e496f0327dd98428 Mon Sep 17 00:00:00 2001 From: ajreckof Date: Tue, 16 Jan 2024 15:16:58 +0100 Subject: [PATCH] Fix renaming a node to the name of its siblings breaking NodePath MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Also fix cases where node name was not visually updated because name was not changed Co-Authored-By: Nông Văn Tình <53887662+nongvantinh@users.noreply.github.com> --- editor/gui/scene_tree_editor.cpp | 5 ++--- scene/main/node.cpp | 5 +++++ scene/main/node.h | 1 + 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/editor/gui/scene_tree_editor.cpp b/editor/gui/scene_tree_editor.cpp index 7a9df26fa7f8..8e90ec01945a 100644 --- a/editor/gui/scene_tree_editor.cpp +++ b/editor/gui/scene_tree_editor.cpp @@ -1051,10 +1051,9 @@ void SceneTreeEditor::_rename_node(Node *p_node, const String &p_name) { } } + new_name = p_node->get_parent()->prevalidate_child_name(p_node, new_name); if (new_name == p_node->get_name()) { - if (item->get_text(0).is_empty()) { - item->set_text(0, new_name); - } + item->set_text(0, new_name); return; } diff --git a/scene/main/node.cpp b/scene/main/node.cpp index a6b7ca8188b5..ed03eeb50841 100644 --- a/scene/main/node.cpp +++ b/scene/main/node.cpp @@ -1214,6 +1214,11 @@ String Node::validate_child_name(Node *p_child) { _generate_serial_child_name(p_child, name); return name; } + +String Node::prevalidate_child_name(Node *p_child, StringName p_name) { + _generate_serial_child_name(p_child, p_name); + return p_name; +} #endif String Node::adjust_name_casing(const String &p_name) { diff --git a/scene/main/node.h b/scene/main/node.h index 8130c61a3419..c82300e6a007 100644 --- a/scene/main/node.h +++ b/scene/main/node.h @@ -614,6 +614,7 @@ class Node : public Object { #ifdef TOOLS_ENABLED String validate_child_name(Node *p_child); + String prevalidate_child_name(Node *p_child, StringName p_name); #endif static String adjust_name_casing(const String &p_name);