浏览代码

Fix node renaming bug when using the '.' character

Fixed by making '.' (and '/') illegal character in node names when adding via the rename feature.
sanikoyes 11 年之前
父节点
当前提交
1d3fa162c8
共有 1 个文件被更改,包括 12 次插入4 次删除
  1. 12 4
      tools/editor/scene_tree_editor.cpp

+ 12 - 4
tools/editor/scene_tree_editor.cpp

@@ -649,20 +649,28 @@ void SceneTreeEditor::_rename_node(ObjectID p_node,const String& p_name) {
 void SceneTreeEditor::_renamed() {
 void SceneTreeEditor::_renamed() {
 
 
 	TreeItem *which=tree->get_edited();
 	TreeItem *which=tree->get_edited();
-	
+
 	ERR_FAIL_COND(!which);
 	ERR_FAIL_COND(!which);
 	NodePath np = which->get_metadata(0);
 	NodePath np = which->get_metadata(0);
 	Node *n=get_node(np);
 	Node *n=get_node(np);
 	ERR_FAIL_COND(!n);
 	ERR_FAIL_COND(!n);
 
 
+	String new_name=which->get_text(0);
+	if (new_name.find(".") != -1 || new_name.find("/") != -1) {
+
+		error->set_text("Invalid node name, the following characters are not allowed:\n  \".\", \"/\"");
+		error->popup_centered_minsize();
+		new_name=n->get_name();
+	}
+
 	if (!undo_redo) {
 	if (!undo_redo) {
-		n->set_name( which->get_text(0) );
+		n->set_name( new_name );
 		which->set_metadata(0,n->get_path());
 		which->set_metadata(0,n->get_path());
 		emit_signal("node_renamed");
 		emit_signal("node_renamed");
 	} else {
 	} else {
 		undo_redo->create_action("Rename Node");
 		undo_redo->create_action("Rename Node");
-		emit_signal("node_prerename",n,which->get_text(0));
-		undo_redo->add_do_method(this,"_rename_node",n->get_instance_ID(),which->get_text(0));
+		emit_signal("node_prerename",n,new_name);
+		undo_redo->add_do_method(this,"_rename_node",n->get_instance_ID(),new_name);
 		undo_redo->add_undo_method(this,"_rename_node",n->get_instance_ID(),n->get_name());
 		undo_redo->add_undo_method(this,"_rename_node",n->get_instance_ID(),n->get_name());
 		undo_redo->commit_action();
 		undo_redo->commit_action();
 	}
 	}