Check invalid node name
This commit is contained in:
parent
a096df5e45
commit
6758b6c131
3 changed files with 25 additions and 4 deletions
|
@ -644,11 +644,12 @@ void SceneTreeEditor::_renamed() {
|
||||||
ERR_FAIL_COND(!n);
|
ERR_FAIL_COND(!n);
|
||||||
|
|
||||||
String new_name = which->get_text(0);
|
String new_name = which->get_text(0);
|
||||||
if (new_name.find(".") != -1 || new_name.find("/") != -1) {
|
if (!Node::_validate_node_name(new_name)) {
|
||||||
|
|
||||||
error->set_text(TTR("Invalid node name, the following characters are not allowed:") + "\n \".\", \"/\"");
|
error->set_text(TTR("Invalid node name, the following characters are not allowed:") + "\n" + Node::invalid_character);
|
||||||
error->popup_centered_minsize();
|
error->popup_centered_minsize();
|
||||||
new_name = n->get_name();
|
|
||||||
|
which->set_text(0, new_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (new_name == n->get_name())
|
if (new_name == n->get_name())
|
||||||
|
|
|
@ -979,9 +979,23 @@ void Node::_set_name_nocheck(const StringName &p_name) {
|
||||||
data.name = p_name;
|
data.name = p_name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String Node::invalid_character = ". : @ / \"";
|
||||||
|
|
||||||
|
bool Node::_validate_node_name(String &p_name) {
|
||||||
|
String name = p_name;
|
||||||
|
Vector<String> chars = Node::invalid_character.split(" ");
|
||||||
|
for (int i = 0; i < chars.size(); i++) {
|
||||||
|
name = name.replace(chars[i], "");
|
||||||
|
}
|
||||||
|
bool is_valid = name == p_name;
|
||||||
|
p_name = name;
|
||||||
|
return is_valid;
|
||||||
|
}
|
||||||
|
|
||||||
void Node::set_name(const String &p_name) {
|
void Node::set_name(const String &p_name) {
|
||||||
|
|
||||||
String name = p_name.replace(":", "").replace("/", "").replace("@", "");
|
String name = p_name;
|
||||||
|
_validate_node_name(name);
|
||||||
|
|
||||||
ERR_FAIL_COND(name == "");
|
ERR_FAIL_COND(name == "");
|
||||||
data.name = name;
|
data.name = name;
|
||||||
|
|
|
@ -190,6 +190,12 @@ private:
|
||||||
|
|
||||||
void _set_tree(SceneTree *p_tree);
|
void _set_tree(SceneTree *p_tree);
|
||||||
|
|
||||||
|
#ifdef TOOLS_ENABLED
|
||||||
|
friend class SceneTreeEditor;
|
||||||
|
#endif
|
||||||
|
static String invalid_character;
|
||||||
|
static bool _validate_node_name(String &p_name);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void _block() { data.blocked++; }
|
void _block() { data.blocked++; }
|
||||||
void _unblock() { data.blocked--; }
|
void _unblock() { data.blocked--; }
|
||||||
|
|
Loading…
Reference in a new issue