|
@@ -2050,16 +2050,24 @@ void SceneTreeDock::_script_created(Ref<Script> p_script) {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- editor_data->get_undo_redo().create_action(TTR("Attach Script"));
|
|
|
+ InspectorDock *inspector_dock = EditorNode::get_singleton()->get_inspector_dock();
|
|
|
+ UndoRedo &undo_redo = editor_data->get_undo_redo();
|
|
|
+
|
|
|
+ undo_redo.create_action(TTR("Attach Script"));
|
|
|
for (List<Node *>::Element *E = selected.front(); E; E = E->next()) {
|
|
|
- Ref<Script> existing = E->get()->get_script();
|
|
|
- editor_data->get_undo_redo().add_do_method(E->get(), "set_script", p_script.get_ref_ptr());
|
|
|
- editor_data->get_undo_redo().add_undo_method(E->get(), "set_script", existing);
|
|
|
- editor_data->get_undo_redo().add_do_method(this, "_update_script_button");
|
|
|
- editor_data->get_undo_redo().add_undo_method(this, "_update_script_button");
|
|
|
+ Node *node = E->get();
|
|
|
+ Ref<Script> existing = node->get_script();
|
|
|
+ undo_redo.add_do_method(inspector_dock, "store_script_properties", node);
|
|
|
+ undo_redo.add_undo_method(inspector_dock, "store_script_properties", node);
|
|
|
+ undo_redo.add_do_method(node, "set_script", p_script.get_ref_ptr());
|
|
|
+ undo_redo.add_undo_method(node, "set_script", existing);
|
|
|
+ undo_redo.add_do_method(inspector_dock, "apply_script_properties", node);
|
|
|
+ undo_redo.add_undo_method(inspector_dock, "apply_script_properties", node);
|
|
|
+ undo_redo.add_do_method(this, "_update_script_button");
|
|
|
+ undo_redo.add_undo_method(this, "_update_script_button");
|
|
|
}
|
|
|
|
|
|
- editor_data->get_undo_redo().commit_action();
|
|
|
+ undo_redo.commit_action();
|
|
|
|
|
|
_push_item(p_script.operator->());
|
|
|
_update_script_button();
|
|
@@ -2706,12 +2714,19 @@ void SceneTreeDock::_script_dropped(String p_file, NodePath p_to) {
|
|
|
ERR_FAIL_COND(!scr.is_valid());
|
|
|
Node *n = get_node(p_to);
|
|
|
if (n) {
|
|
|
- editor_data->get_undo_redo().create_action(TTR("Attach Script"));
|
|
|
- editor_data->get_undo_redo().add_do_method(n, "set_script", scr);
|
|
|
- editor_data->get_undo_redo().add_undo_method(n, "set_script", n->get_script());
|
|
|
- editor_data->get_undo_redo().add_do_method(this, "_update_script_button");
|
|
|
- editor_data->get_undo_redo().add_undo_method(this, "_update_script_button");
|
|
|
- editor_data->get_undo_redo().commit_action();
|
|
|
+ InspectorDock *inspector_dock = EditorNode::get_singleton()->get_inspector_dock();
|
|
|
+ UndoRedo &undo_redo = editor_data->get_undo_redo();
|
|
|
+
|
|
|
+ undo_redo.create_action(TTR("Attach Script"));
|
|
|
+ undo_redo.add_do_method(inspector_dock, "store_script_properties", n);
|
|
|
+ undo_redo.add_undo_method(inspector_dock, "store_script_properties", n);
|
|
|
+ undo_redo.add_do_method(n, "set_script", scr);
|
|
|
+ undo_redo.add_undo_method(n, "set_script", n->get_script());
|
|
|
+ undo_redo.add_do_method(inspector_dock, "apply_script_properties", n);
|
|
|
+ undo_redo.add_undo_method(inspector_dock, "apply_script_properties", n);
|
|
|
+ undo_redo.add_do_method(this, "_update_script_button");
|
|
|
+ undo_redo.add_undo_method(this, "_update_script_button");
|
|
|
+ undo_redo.commit_action();
|
|
|
}
|
|
|
}
|
|
|
|