Skip to content

Commit 7dc9a08

Browse files
committed
Add fuzzy filtering to the script filtering
1 parent 6c9765d commit 7dc9a08

File tree

1 file changed

+19
-4
lines changed

1 file changed

+19
-4
lines changed

editor/plugins/script_editor_plugin.cpp

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
#include "core/io/resource_loader.h"
3838
#include "core/os/keyboard.h"
3939
#include "core/os/os.h"
40+
#include "core/string/fuzzy_search.h"
4041
#include "core/version.h"
4142
#include "editor/code_editor.h"
4243
#include "editor/debugger/editor_debugger_node.h"
@@ -2281,10 +2282,24 @@ void ScriptEditor::_update_script_names() {
22812282
}
22822283

22832284
Vector<_ScriptEditorItemData> sedata_filtered;
2284-
for (int i = 0; i < sedata.size(); i++) {
2285-
String filter = filter_scripts->get_text();
2286-
if (filter.is_empty() || filter.is_subsequence_ofn(sedata[i].name)) {
2287-
sedata_filtered.push_back(sedata[i]);
2285+
2286+
String filter = filter_scripts->get_text();
2287+
2288+
if (filter.is_empty()) {
2289+
sedata_filtered = sedata;
2290+
} else {
2291+
PackedStringArray search_names;
2292+
for (int i = 0; i < sedata.size(); i++) {
2293+
search_names.append(sedata[i].name);
2294+
}
2295+
2296+
Vector<FuzzySearchResult> results;
2297+
FuzzySearch fuzzy;
2298+
fuzzy.set_query(filter, false);
2299+
fuzzy.search_all(search_names, results);
2300+
2301+
for (const FuzzySearchResult &res : results) {
2302+
sedata_filtered.push_back(sedata[res.original_index]);
22882303
}
22892304
}
22902305

0 commit comments

Comments
 (0)