Prevent renaming to an unkown extension from FileSystem dock.

(cherry picked from commit c24433f500)
This commit is contained in:
jmb462 2022-01-16 19:08:40 +01:00 committed by Rémi Verschelde
parent 8db41cf94d
commit e8f3dad898
No known key found for this signature in database
GPG Key ID: C3336907360768E1
3 changed files with 11 additions and 0 deletions

View File

@ -1498,6 +1498,10 @@ void EditorFileSystem::update_file(const String &p_file) {
_queue_update_script_classes(); _queue_update_script_classes();
} }
Set<String> EditorFileSystem::get_valid_extensions() const {
return valid_extensions;
}
Error EditorFileSystem::_reimport_group(const String &p_group_file, const Vector<String> &p_files) { Error EditorFileSystem::_reimport_group(const String &p_group_file, const Vector<String> &p_files) {
String importer_name; String importer_name;

View File

@ -262,6 +262,7 @@ public:
void scan_changes(); void scan_changes();
void get_changed_sources(List<String> *r_changed); void get_changed_sources(List<String> *r_changed);
void update_file(const String &p_file); void update_file(const String &p_file);
Set<String> get_valid_extensions() const;
EditorFileSystemDirectory *get_filesystem_path(const String &p_path); EditorFileSystemDirectory *get_filesystem_path(const String &p_path);
String get_file_type(const String &p_file) const; String get_file_type(const String &p_file) const;

View File

@ -1436,12 +1436,18 @@ void FileSystemDock::_folder_removed(String p_folder) {
void FileSystemDock::_rename_operation_confirm() { void FileSystemDock::_rename_operation_confirm() {
String new_name = rename_dialog_text->get_text().strip_edges(); String new_name = rename_dialog_text->get_text().strip_edges();
String old_name = tree->get_selected()->get_text(0);
if (new_name.length() == 0) { if (new_name.length() == 0) {
EditorNode::get_singleton()->show_warning(TTR("No name provided.")); EditorNode::get_singleton()->show_warning(TTR("No name provided."));
return; return;
} else if (new_name.find("/") != -1 || new_name.find("\\") != -1 || new_name.find(":") != -1) { } else if (new_name.find("/") != -1 || new_name.find("\\") != -1 || new_name.find(":") != -1) {
EditorNode::get_singleton()->show_warning(TTR("Name contains invalid characters.")); EditorNode::get_singleton()->show_warning(TTR("Name contains invalid characters."));
return; return;
} else if (to_rename.is_file && old_name.get_extension() != new_name.get_extension()) {
if (!EditorFileSystem::get_singleton()->get_valid_extensions().find(new_name.get_extension())) {
EditorNode::get_singleton()->show_warning(TTR("This file extension is not recognized by the editor.\nIf you want to rename it anyway, use your operating system's file manager.\nAfter renaming to an unknown extension, the file won't be shown in the editor anymore."));
return;
}
} }
String old_path = to_rename.path.ends_with("/") ? to_rename.path.substr(0, to_rename.path.length() - 1) : to_rename.path; String old_path = to_rename.path.ends_with("/") ? to_rename.path.substr(0, to_rename.path.length() - 1) : to_rename.path;