Merge pull request #84356 from viksl/drag_and_drop_2d_selection
Select newly added nodes on drag and drop in 2D viewport
This commit is contained in:
commit
994dd21c02
@ -5811,10 +5811,12 @@ bool CanvasItemEditorViewport::_create_instance(Node *parent, String &path, cons
|
|||||||
instantiated_scene->set_scene_file_path(ProjectSettings::get_singleton()->localize_path(path));
|
instantiated_scene->set_scene_file_path(ProjectSettings::get_singleton()->localize_path(path));
|
||||||
|
|
||||||
EditorUndoRedoManager *undo_redo = EditorUndoRedoManager::get_singleton();
|
EditorUndoRedoManager *undo_redo = EditorUndoRedoManager::get_singleton();
|
||||||
|
EditorSelection *editor_selection = EditorNode::get_singleton()->get_editor_selection();
|
||||||
undo_redo->add_do_method(parent, "add_child", instantiated_scene, true);
|
undo_redo->add_do_method(parent, "add_child", instantiated_scene, true);
|
||||||
undo_redo->add_do_method(instantiated_scene, "set_owner", edited_scene);
|
undo_redo->add_do_method(instantiated_scene, "set_owner", edited_scene);
|
||||||
undo_redo->add_do_reference(instantiated_scene);
|
undo_redo->add_do_reference(instantiated_scene);
|
||||||
undo_redo->add_undo_method(parent, "remove_child", instantiated_scene);
|
undo_redo->add_undo_method(parent, "remove_child", instantiated_scene);
|
||||||
|
undo_redo->add_do_method(editor_selection, "add_node", instantiated_scene);
|
||||||
|
|
||||||
String new_name = parent->validate_child_name(instantiated_scene);
|
String new_name = parent->validate_child_name(instantiated_scene);
|
||||||
EditorDebuggerNode *ed = EditorDebuggerNode::get_singleton();
|
EditorDebuggerNode *ed = EditorDebuggerNode::get_singleton();
|
||||||
@ -5853,6 +5855,8 @@ void CanvasItemEditorViewport::_perform_drop_data() {
|
|||||||
|
|
||||||
EditorUndoRedoManager *undo_redo = EditorUndoRedoManager::get_singleton();
|
EditorUndoRedoManager *undo_redo = EditorUndoRedoManager::get_singleton();
|
||||||
undo_redo->create_action_for_history(TTR("Create Node"), EditorNode::get_editor_data().get_current_edited_scene_history_id());
|
undo_redo->create_action_for_history(TTR("Create Node"), EditorNode::get_editor_data().get_current_edited_scene_history_id());
|
||||||
|
EditorSelection *editor_selection = EditorNode::get_singleton()->get_editor_selection();
|
||||||
|
undo_redo->add_do_method(editor_selection, "clear");
|
||||||
|
|
||||||
for (int i = 0; i < selected_files.size(); i++) {
|
for (int i = 0; i < selected_files.size(); i++) {
|
||||||
String path = selected_files[i];
|
String path = selected_files[i];
|
||||||
@ -5879,6 +5883,7 @@ void CanvasItemEditorViewport::_perform_drop_data() {
|
|||||||
if (texture != nullptr && texture.is_valid()) {
|
if (texture != nullptr && texture.is_valid()) {
|
||||||
Node *child = Object::cast_to<Node>(ClassDB::instantiate(default_texture_node_type));
|
Node *child = Object::cast_to<Node>(ClassDB::instantiate(default_texture_node_type));
|
||||||
_create_nodes(target_node, child, path, drop_pos);
|
_create_nodes(target_node, child, path, drop_pos);
|
||||||
|
undo_redo->add_do_method(editor_selection, "add_node", child);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user