소스 검색

Merge pull request #36667 from simpuid/paste-params-undo-feature

Implement undo-redo feature for Parameter Paste in the Inspector
Rémi Verschelde 5 년 전
부모
커밋
1399747532
2개의 변경된 파일6개의 추가작업 그리고 3개의 파일을 삭제
  1. 6 2
      editor/editor_data.cpp
  2. 0 1
      editor/inspector_dock.cpp

+ 6 - 2
editor/editor_data.cpp

@@ -435,10 +435,14 @@ void EditorData::restore_editor_global_states() {
 
 void EditorData::paste_object_params(Object *p_object) {
 
+	ERR_FAIL_NULL(p_object);
+	undo_redo.create_action(TTR("Paste Params"));
 	for (List<PropertyData>::Element *E = clipboard.front(); E; E = E->next()) {
-
-		p_object->set(E->get().name, E->get().value);
+		String name = E->get().name;
+		undo_redo.add_do_property(p_object, name, E->get().value);
+		undo_redo.add_undo_property(p_object, name, p_object->get(name));
 	}
+	undo_redo.commit_action();
 }
 
 bool EditorData::call_build() {

+ 0 - 1
editor/inspector_dock.cpp

@@ -76,7 +76,6 @@ void InspectorDock::_menu_option(int p_option) {
 			editor_data->apply_changes_in_editors();
 			if (current)
 				editor_data->paste_object_params(current);
-			editor_data->get_undo_redo().clear_history();
 		} break;
 
 		case OBJECT_UNIQUE_RESOURCES: {