| 1293 | } |
| 1294 | |
| 1295 | void SceneTreeEditor::_cell_multi_selected(Object *p_object, int p_cell, bool p_selected) { |
| 1296 | TreeItem *item = Object::cast_to<TreeItem>(p_object); |
| 1297 | ERR_FAIL_NULL(item); |
| 1298 | |
| 1299 | if (!item->is_visible()) { |
| 1300 | return; |
| 1301 | } |
| 1302 | |
| 1303 | NodePath np = item->get_metadata(0); |
| 1304 | |
| 1305 | Node *n = get_node(np); |
| 1306 | |
| 1307 | if (!n) { |
| 1308 | return; |
| 1309 | } |
| 1310 | |
| 1311 | if (!editor_selection) { |
| 1312 | return; |
| 1313 | } |
| 1314 | |
| 1315 | if (p_selected) { |
| 1316 | editor_selection->add_node(n); |
| 1317 | |
| 1318 | } else { |
| 1319 | editor_selection->remove_node(n); |
| 1320 | } |
| 1321 | |
| 1322 | // Emitted "selected" in _selected_changed() when select single node, so select multiple node emit "changed". |
| 1323 | if (editor_selection->get_selected_nodes().size() > 1) { |
| 1324 | emit_signal(SNAME("node_changed")); |
| 1325 | } |
| 1326 | } |
| 1327 | |
| 1328 | void SceneTreeEditor::_tree_scroll_to_item(ObjectID p_item_id) { |
| 1329 | ERR_FAIL_NULL(tree); |
nothing calls this directly
no test coverage detected