FileSystem: Force update when we delete a folder from the editor and searching changes only if we change the directory successfully in the scan_fs_changes

This commit is contained in:
Mateo Kuruk Miccino 2021-02-27 17:43:26 -03:00
parent 33a0fb6e02
commit dc76938679
3 changed files with 15 additions and 3 deletions

View File

@ -68,6 +68,11 @@ int EditorFileSystemDirectory::find_dir_index(const String &p_dir) const {
return -1; return -1;
} }
void EditorFileSystemDirectory::force_update() {
// We set modified_time to 0 to force `EditorFileSystem::_scan_fs_changes` to search changes in the directory
modified_time = 0;
}
int EditorFileSystemDirectory::get_subdir_count() const { int EditorFileSystemDirectory::get_subdir_count() const {
return subdirs.size(); return subdirs.size();
} }
@ -854,9 +859,11 @@ void EditorFileSystem::_scan_fs_changes(EditorFileSystemDirectory *p_dir, const
//then scan files and directories and check what's different //then scan files and directories and check what's different
DirAccess *da = DirAccess::create(DirAccess::ACCESS_RESOURCES); DirAccessRef da = DirAccess::create(DirAccess::ACCESS_RESOURCES);
Error ret = da->change_dir(cd);
ERR_FAIL_COND_MSG(ret != OK, "Cannot change to '" + cd + "' folder.");
da->change_dir(cd);
da->list_dir_begin(); da->list_dir_begin();
while (true) { while (true) {
String f = da->get_next(); String f = da->get_next();
@ -944,7 +951,6 @@ void EditorFileSystem::_scan_fs_changes(EditorFileSystemDirectory *p_dir, const
} }
da->list_dir_end(); da->list_dir_end();
memdelete(da);
} }
for (int i = 0; i < p_dir->files.size(); i++) { for (int i = 0; i < p_dir->files.size(); i++) {

View File

@ -102,6 +102,8 @@ public:
int find_file_index(const String &p_file) const; int find_file_index(const String &p_file) const;
int find_dir_index(const String &p_dir) const; int find_dir_index(const String &p_dir) const;
void force_update();
EditorFileSystemDirectory(); EditorFileSystemDirectory();
~EditorFileSystemDirectory(); ~EditorFileSystemDirectory();
}; };

View File

@ -1465,6 +1465,10 @@ void FileSystemDock::_folder_removed(String p_folder) {
} }
current_path->set_text(path); current_path->set_text(path);
EditorFileSystemDirectory *efd = EditorFileSystem::get_singleton()->get_filesystem_path(path);
if (efd) {
efd->force_update();
}
} }
void FileSystemDock::_rename_operation_confirm() { void FileSystemDock::_rename_operation_confirm() {