Explorar o código

add missing undo on CloseCurve

Stéphane Fortin %!s(int64=4) %!d(string=hai) anos
pai
achega
6cf54d06be
Modificáronse 1 ficheiros con 8 adicións e 1 borrados
  1. 8 1
      editor/plugins/path_editor_plugin.cpp

+ 8 - 1
editor/plugins/path_editor_plugin.cpp

@@ -503,7 +503,14 @@ void PathEditorPlugin::_close_curve() {
 	if (c->get_point_count() < 2) {
 		return;
 	}
-	c->add_point(c->get_point_position(0), c->get_point_in(0), c->get_point_out(0));
+	if (c->get_point_position(0) == c->get_point_position(c->get_point_count() - 1)) {
+		return;
+	}
+	UndoRedo *ur = editor->get_undo_redo();
+	ur->create_action(TTR("Close Curve"));
+	ur->add_do_method(c.ptr(), "add_point", c->get_point_position(0), c->get_point_in(0), c->get_point_out(0), -1);
+	ur->add_undo_method(c.ptr(), "remove_point", c->get_point_count());
+	ur->commit_action();
 }
 
 void PathEditorPlugin::_handle_option_pressed(int p_option) {