Просмотр исходного кода

tools: search in both name and type

Daniele Bartolini 1 месяц назад
Родитель
Сommit
df9c5eaec7
1 измененных файлов с 16 добавлено и 22 удалено
  1. 16 22
      tools/level_editor/project_store.vala

+ 16 - 22
tools/level_editor/project_store.vala

@@ -599,6 +599,20 @@ public class ProjectStore
 			});
 	}
 
+	public bool is_visible(string type, string name, string needle)
+	{
+		// Always show the roots.
+		if ((type == "<folder>" && name == "") || type == "<favorites>")
+			return true;
+
+		string basename = GLib.Path.get_basename(name);
+		return basename != null
+			&& (needle == ""
+			|| basename.down().index_of(needle) > -1
+			|| type.down().index_of(needle) > -1
+			);
+	}
+
 	public void filter(string needle)
 	{
 		_tree_store.foreach((model, path, iter) => {
@@ -611,17 +625,7 @@ public class ProjectStore
 				model.get_value(iter, ProjectStore.Column.NAME, out val);
 				name = (string)val;
 
-				bool visible = false;
-
-				// Always show the roots.
-				if ((type == "<folder>" && name == "") || type == "<favorites>") {
-					visible = true;
-				} else {
-					string basename = GLib.Path.get_basename(name);
-					visible = basename != null && (needle == "" || basename.down().index_of(needle) > -1);
-				}
-
-				if (visible) {
+				if (is_visible(type, name, needle)) {
 					// Make this iter and all its ancestors visible.
 					Gtk.TreeIter it = iter;
 					_tree_store.set(it, Column.VISIBLE, true, -1);
@@ -642,17 +646,7 @@ public class ProjectStore
 				model.get_value(iter, ProjectStore.Column.NAME, out val);
 				name = (string)val;
 
-				bool visible = false;
-
-				// Always show the roots.
-				if ((type == "<folder>" && name == "") || type == "<favorites>") {
-					visible = true;
-				} else {
-					string basename = GLib.Path.get_basename(name);
-					visible = basename != null && (needle == "" || basename.down().index_of(needle) > -1);
-				}
-
-				_list_store.set(iter, ProjectStore.Column.VISIBLE, visible, -1);
+				_list_store.set(iter, ProjectStore.Column.VISIBLE, is_visible(type, name, needle), -1);
 				return false; // Continue iterating.
 			});
 	}