diff --git a/editor/find_in_files.cpp b/editor/find_in_files.cpp index a14df018587f..c83fa82c1337 100644 --- a/editor/find_in_files.cpp +++ b/editor/find_in_files.cpp @@ -172,9 +172,11 @@ void FindInFiles::_iterate() { _current_dir = _current_dir.path_join(folder_name); PackedStringArray sub_dirs; - _scan_dir("res://" + _current_dir, sub_dirs); + PackedStringArray files_to_scan; + _scan_dir("res://" + _current_dir, sub_dirs, files_to_scan); _folders_stack.push_back(sub_dirs); + _files_to_scan.append_array(files_to_scan); } else { // Go back one level. @@ -211,7 +213,7 @@ float FindInFiles::get_progress() const { return 0; } -void FindInFiles::_scan_dir(String path, PackedStringArray &out_folders) { +void FindInFiles::_scan_dir(String path, PackedStringArray &out_folders, PackedStringArray &out_files_to_scan) { Ref dir = DirAccess::open(path); if (dir.is_null()) { print_verbose("Cannot open directory! " + path); @@ -227,8 +229,11 @@ void FindInFiles::_scan_dir(String path, PackedStringArray &out_folders) { break; } - // If there is a .gdignore file in the directory, skip searching the directory. + // If there is a .gdignore file in the directory, clear all the files/folders + // to be searched on this path and skip searching the directory. if (file == ".gdignore") { + out_folders.clear(); + out_files_to_scan.clear(); break; } @@ -247,7 +252,7 @@ void FindInFiles::_scan_dir(String path, PackedStringArray &out_folders) { } else { String file_ext = file.get_extension(); if (_extension_filter.has(file_ext)) { - _files_to_scan.push_back(path.path_join(file)); + out_files_to_scan.push_back(path.path_join(file)); } } } diff --git a/editor/find_in_files.h b/editor/find_in_files.h index 25ce2b0415f6..fcf5dd62818c 100644 --- a/editor/find_in_files.h +++ b/editor/find_in_files.h @@ -67,7 +67,7 @@ class FindInFiles : public Node { private: void _process(); void _iterate(); - void _scan_dir(String path, PackedStringArray &out_folders); + void _scan_dir(String path, PackedStringArray &out_folders, PackedStringArray &out_files_to_scan); void _scan_file(String fpath); // Config