Browse Source

Merge pull request #22398 from groud/fix_import_tab_update

Fix import tab not updating when selecting in the tree view
Rémi Verschelde 7 years ago
parent
commit
1f18a85ea1
1 changed files with 26 additions and 5 deletions
  1. 26 5
      editor/filesystem_dock.cpp

+ 26 - 5
editor/filesystem_dock.cpp

@@ -395,6 +395,9 @@ void FileSystemDock::_notification(int p_what) {
 }
 }
 
 
 void FileSystemDock::_tree_multi_selected(Object *p_item, int p_column, bool p_selected) {
 void FileSystemDock::_tree_multi_selected(Object *p_item, int p_column, bool p_selected) {
+	// Update the import dock
+	import_dock_needs_update = true;
+	call_deferred("_update_import_dock");
 
 
 	// Return if we don't select something new
 	// Return if we don't select something new
 	if (!p_selected)
 	if (!p_selected)
@@ -2122,15 +2125,33 @@ void FileSystemDock::_update_import_dock() {
 	if (!import_dock_needs_update)
 	if (!import_dock_needs_update)
 		return;
 		return;
 
 
-	//check import
+	// List selected
+	Vector<String> selected;
+	if (display_mode_setting == DISPLAY_MODE_SETTING_TREE_ONLY) {
+		// Use the tree
+		selected = _tree_get_selected();
+
+	} else {
+		// Use the file list
+		for (int i = 0; i < files->get_item_count(); i++) {
+			if (!files->is_selected(i))
+				continue;
+
+			selected.push_back(files->get_item_metadata(i));
+		}
+	}
+
+	// Check import
 	Vector<String> imports;
 	Vector<String> imports;
 	String import_type;
 	String import_type;
+	for (int i = 0; i < selected.size(); i++) {
+		String fpath = selected[i];
 
 
-	for (int i = 0; i < files->get_item_count(); i++) {
-		if (!files->is_selected(i))
-			continue;
+		if (fpath.ends_with("/")) {
+			imports.clear();
+			break;
+		}
 
 
-		String fpath = files->get_item_metadata(i);
 		if (!FileAccess::exists(fpath + ".import")) {
 		if (!FileAccess::exists(fpath + ".import")) {
 			imports.clear();
 			imports.clear();
 			break;
 			break;