Browse Source

Fixes deselection not working when merging scene

Fixes the issue of multiselection retaining its selection when deselecting in the merge scene dialog
Emmanuel Barroga 6 years ago
parent
commit
b5ff31a433
1 changed files with 13 additions and 2 deletions
  1. 13 2
      editor/editor_sub_scene.cpp

+ 13 - 2
editor/editor_sub_scene.cpp

@@ -97,8 +97,14 @@ void EditorSubScene::_fill_tree(Node *p_node, TreeItem *p_parent) {
 }
 
 void EditorSubScene::_selected_changed() {
-	selection.clear();
-	is_root = false;
+	TreeItem *item = tree->get_selected();
+	ERR_FAIL_COND(!item);
+	Node *n = item->get_metadata(0);
+
+	if (!n || !selection.find(n)) {
+		selection.clear();
+		is_root = false;
+	}
 }
 
 void EditorSubScene::_item_multi_selected(Object *p_object, int p_cell, bool p_selected) {
@@ -116,6 +122,11 @@ void EditorSubScene::_item_multi_selected(Object *p_object, int p_cell, bool p_s
 				selection.clear();
 			}
 			selection.push_back(n);
+		} else {
+			List<Node *>::Element *E = selection.find(n);
+
+			if (E)
+				selection.erase(E);
 		}
 	}
 }