|
@@ -521,7 +521,7 @@ void SceneTreeEditor::_node_removed(Node *p_node) {
|
|
|
|
|
|
if (p_node == selected) {
|
|
|
selected = nullptr;
|
|
|
- emit_signal("node_selected");
|
|
|
+ _emit_node_selected();
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -615,24 +615,6 @@ void SceneTreeEditor::_tree_changed() {
|
|
|
pending_test_update = true;
|
|
|
}
|
|
|
|
|
|
-void SceneTreeEditor::_selected_changed() {
|
|
|
- TreeItem *s = tree->get_selected();
|
|
|
- ERR_FAIL_COND(!s);
|
|
|
- NodePath np = s->get_metadata(0);
|
|
|
-
|
|
|
- Node *n = get_node(np);
|
|
|
-
|
|
|
- if (n == selected) {
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- selected = get_node(np);
|
|
|
-
|
|
|
- blocked++;
|
|
|
- emit_signal("node_selected");
|
|
|
- blocked--;
|
|
|
-}
|
|
|
-
|
|
|
void SceneTreeEditor::_deselect_items() {
|
|
|
// Clear currently selected items in scene tree dock.
|
|
|
if (editor_selection) {
|
|
@@ -641,6 +623,12 @@ void SceneTreeEditor::_deselect_items() {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+void SceneTreeEditor::_emit_node_selected() {
|
|
|
+ blocked++;
|
|
|
+ emit_signal("node_selected");
|
|
|
+ blocked--;
|
|
|
+}
|
|
|
+
|
|
|
void SceneTreeEditor::_cell_multi_selected(Object *p_object, int p_cell, bool p_selected) {
|
|
|
TreeItem *item = Object::cast_to<TreeItem>(p_object);
|
|
|
ERR_FAIL_COND(!item);
|
|
@@ -667,7 +655,7 @@ void SceneTreeEditor::_cell_multi_selected(Object *p_object, int p_cell, bool p_
|
|
|
// Selection changed to be single node, so emit "selected" (for single node) rather than "changed" (for multiple nodes)
|
|
|
if (editor_selection->get_selected_nodes().size() == 1) {
|
|
|
selected = editor_selection->get_selected_node_list()[0];
|
|
|
- emit_signal("node_selected");
|
|
|
+ _emit_node_selected();
|
|
|
} else {
|
|
|
emit_signal("node_changed");
|
|
|
}
|
|
@@ -759,7 +747,7 @@ void SceneTreeEditor::set_selected(Node *p_node, bool p_emit_selected) {
|
|
|
}
|
|
|
|
|
|
if (p_emit_selected) {
|
|
|
- emit_signal("node_selected");
|
|
|
+ _emit_node_selected();
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -1200,7 +1188,6 @@ SceneTreeEditor::SceneTreeEditor(bool p_label, bool p_can_rename, bool p_can_ope
|
|
|
tree->connect("empty_tree_rmb_selected", callable_mp(this, &SceneTreeEditor::_rmb_select));
|
|
|
}
|
|
|
|
|
|
- tree->connect("cell_selected", callable_mp(this, &SceneTreeEditor::_selected_changed));
|
|
|
tree->connect("item_edited", callable_mp(this, &SceneTreeEditor::_renamed), varray(), CONNECT_DEFERRED);
|
|
|
tree->connect("multi_selected", callable_mp(this, &SceneTreeEditor::_cell_multi_selected));
|
|
|
tree->connect("button_pressed", callable_mp(this, &SceneTreeEditor::_cell_button_pressed));
|