Jelajahi Sumber

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.
Shivansh Anand 5 tahun lalu
induk
melakukan
8c66d80099
1 mengubah file dengan 8 tambahan dan 2 penghapusan
  1. 8 2
      editor/quick_open.cpp

+ 8 - 2
editor/quick_open.cpp

@@ -113,12 +113,18 @@ void EditorQuickOpen::_sbox_input(const Ref<InputEvent> &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());
 }