summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmmanuel Barroga <emmanuelbarroga@gmail.com>2019-10-08 19:21:11 -0700
committerEmmanuel Barroga <emmanuelbarroga@gmail.com>2019-10-08 22:42:47 -0700
commitb5ff31a4336db5eaa482dc1771ba1c7372491ee5 (patch)
tree99f92bd7e8a7a20d6c971b094ca38b740d640ff2
parent0a4065e5146e172896c25151a1acdc9b4a7f684e (diff)
Fixes deselection not working when merging scene
Fixes the issue of multiselection retaining its selection when deselecting in the merge scene dialog
-rw-r--r--editor/editor_sub_scene.cpp15
1 files changed, 13 insertions, 2 deletions
diff --git a/editor/editor_sub_scene.cpp b/editor/editor_sub_scene.cpp
index 987033b123..a77051c80b 100644
--- a/editor/editor_sub_scene.cpp
+++ b/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);
}
}
}