From 5f21a5b9e3418bc3687bb0eba4994fcd01c22622 Mon Sep 17 00:00:00 2001 From: Shivansh Anand Date: Wed, 13 Nov 2019 00:15:14 +0530 Subject: [PATCH] Make Quick Open substring match more specific. When finding a substring, the rating is biased towards substrings at the end of the path. Fixes #33504. (cherry picked from commit 8c66d800993e6c5884123fbb8ca868727830f717) --- editor/quick_open.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/editor/quick_open.cpp b/editor/quick_open.cpp index 4cd70b0f8e4..33289f448b7 100644 --- a/editor/quick_open.cpp +++ b/editor/quick_open.cpp @@ -113,12 +113,18 @@ void EditorQuickOpen::_sbox_input(const Ref &p_ie) { float EditorQuickOpen::_path_cmp(String search, String path) const { + // Exact match. if (search == path) { return 1.2f; } - if (path.findn(search) != -1) { - return 1.1f; + + // Substring match, with positive bias for matches close to the end of the path. + int pos = path.rfindn(search); + if (pos != -1) { + return 1.1f + 0.09 / (path.length() - pos + 1); } + + // Similarity. return path.to_lower().similarity(search.to_lower()); }