Pārlūkot izejas kodu

Merge pull request #87252 from ajreckof/Fix-renaming-a-node-to-the-name-of-its-siblings-breaking-NodePath

Fix renaming a node to the name of its siblings breaking NodePath
Yuri Sizov 1 gadu atpakaļ
vecāks
revīzija
adcfe3d1a0
3 mainītis faili ar 8 papildinājumiem un 3 dzēšanām
  1. 2 3
      editor/gui/scene_tree_editor.cpp
  2. 5 0
      scene/main/node.cpp
  3. 1 0
      scene/main/node.h

+ 2 - 3
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;
 	}
 

+ 5 - 0
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) {

+ 1 - 0
scene/main/node.h

@@ -614,6 +614,7 @@ public:
 
 #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);