mirror of
https://github.com/godotengine/godot.git
synced 2025-01-18 20:40:57 +08:00
Merge pull request #81075 from SekoiaTree/prevent-leading-dot
Prevent creating any type of file with a leading dot
This commit is contained in:
commit
119f379a3d
@ -51,13 +51,20 @@ String DirectoryCreateDialog::_validate_path(const String &p_path) const {
|
||||
return TTR("Folder name cannot be empty.");
|
||||
}
|
||||
|
||||
if (p_path.contains("\\") || p_path.contains(":") || p_path.contains("*") ||
|
||||
p_path.contains("|") || p_path.contains(">")) {
|
||||
return TTR("Folder name contains invalid characters.");
|
||||
}
|
||||
|
||||
for (const String &part : p_path.split("/")) {
|
||||
if (part.is_empty()) {
|
||||
return TTR("Folder name cannot be empty.");
|
||||
}
|
||||
if (p_path.contains("\\") || p_path.contains(":") || p_path.contains("*") ||
|
||||
p_path.contains("|") || p_path.contains(">") || p_path.ends_with(".") || p_path.ends_with(" ")) {
|
||||
return TTR("Folder name contains invalid characters.");
|
||||
if (part.ends_with(" ") || part[0] == ' ') {
|
||||
return TTR("Folder name cannot begin or end with a space.");
|
||||
}
|
||||
if (part[0] == '.') {
|
||||
return TTR("Folder name cannot begin with a dot.");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1747,7 +1747,7 @@ void FileSystemDock::_rename_operation_confirm() {
|
||||
} else if (new_name.contains("/") || new_name.contains("\\") || new_name.contains(":")) {
|
||||
EditorNode::get_singleton()->show_warning(TTR("Name contains invalid characters."));
|
||||
rename_error = true;
|
||||
} else if (new_name.begins_with(".")) {
|
||||
} else if (new_name[0] == '.') {
|
||||
EditorNode::get_singleton()->show_warning(TTR("This filename begins with a dot rendering the file invisible to the editor.\nIf you want to rename it anyway, use your operating system's file manager."));
|
||||
rename_error = true;
|
||||
} else if (to_rename.is_file && to_rename.path.get_extension() != new_name.get_extension()) {
|
||||
@ -1819,6 +1819,9 @@ void FileSystemDock::_duplicate_operation_confirm() {
|
||||
} else if (new_name.contains("/") || new_name.contains("\\") || new_name.contains(":")) {
|
||||
EditorNode::get_singleton()->show_warning(TTR("Name contains invalid characters."));
|
||||
return;
|
||||
} else if (new_name[0] == '.') {
|
||||
EditorNode::get_singleton()->show_warning(TTR("Name begins with a dot."));
|
||||
return;
|
||||
}
|
||||
|
||||
String base_dir = to_duplicate.path.get_base_dir();
|
||||
|
@ -104,6 +104,8 @@ void SceneCreateDialog::update_dialog() {
|
||||
|
||||
if (validation_panel->is_valid() && !scene_name.is_valid_filename()) {
|
||||
validation_panel->set_message(MSG_ID_PATH, TTR("File name invalid."), EditorValidationPanel::MSG_ERROR);
|
||||
} else if (validation_panel->is_valid() && scene_name[0] == '.') {
|
||||
validation_panel->set_message(MSG_ID_PATH, TTR("File name begins with a dot."), EditorValidationPanel::MSG_ERROR);
|
||||
}
|
||||
|
||||
if (validation_panel->is_valid()) {
|
||||
|
@ -244,6 +244,9 @@ String ScriptCreateDialog::_validate_path(const String &p_path, bool p_file_must
|
||||
if (!p.get_file().get_basename().is_valid_filename()) {
|
||||
return TTR("Filename is invalid.");
|
||||
}
|
||||
if (p.get_file().begins_with(".")) {
|
||||
return TTR("Name begins with a dot.");
|
||||
}
|
||||
|
||||
p = ProjectSettings::get_singleton()->localize_path(p);
|
||||
if (!p.begins_with("res://")) {
|
||||
|
Loading…
Reference in New Issue
Block a user