Skip to content

Commit 5c5708e

Browse files
committed
Merge pull request godotengine#105239 from Arnklit/script-fuzzy-filtering
Add fuzzy filtering to the script filtering
2 parents bb47f01 + 7dc9a08 commit 5c5708e

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
@@ -38,6 +38,7 @@
3838
#include "core/io/resource_loader.h"
3939
#include "core/os/keyboard.h"
4040
#include "core/os/os.h"
41+
#include "core/string/fuzzy_search.h"
4142
#include "core/version.h"
4243
#include "editor/code_editor.h"
4344
#include "editor/debugger/editor_debugger_node.h"
@@ -2322,10 +2323,24 @@ void ScriptEditor::_update_script_names() {
23222323
}
23232324

23242325
Vector<_ScriptEditorItemData> sedata_filtered;
2325-
for (int i = 0; i < sedata.size(); i++) {
2326-
String filter = filter_scripts->get_text();
2327-
if (filter.is_empty() || filter.is_subsequence_ofn(sedata[i].name)) {
2328-
sedata_filtered.push_back(sedata[i]);
2326+
2327+
String filter = filter_scripts->get_text();
2328+
2329+
if (filter.is_empty()) {
2330+
sedata_filtered = sedata;
2331+
} else {
2332+
PackedStringArray search_names;
2333+
for (int i = 0; i < sedata.size(); i++) {
2334+
search_names.append(sedata[i].name);
2335+
}
2336+
2337+
Vector<FuzzySearchResult> results;
2338+
FuzzySearch fuzzy;
2339+
fuzzy.set_query(filter, false);
2340+
fuzzy.search_all(search_names, results);
2341+
2342+
for (const FuzzySearchResult &res : results) {
2343+
sedata_filtered.push_back(sedata[res.original_index]);
23292344
}
23302345
}
23312346

0 commit comments

Comments
 (0)