Browse Source

Merge pull request #69376 from zaevi/adjust_dropping_texture

Adjust position and size for dropping texture in canvas editor.
Rémi Verschelde 2 years ago
parent
commit
cd491c6e47
1 changed files with 6 additions and 1 deletions
  1. 6 1
      editor/plugins/canvas_item_editor_plugin.cpp

+ 6 - 1
editor/plugins/canvas_item_editor_plugin.cpp

@@ -5596,7 +5596,7 @@ void CanvasItemEditorViewport::_create_nodes(Node *parent, Node *child, String &
 	// make visible for certain node type
 	// make visible for certain node type
 	if (Object::cast_to<Control>(child)) {
 	if (Object::cast_to<Control>(child)) {
 		Size2 texture_size = texture->get_size();
 		Size2 texture_size = texture->get_size();
-		undo_redo->add_do_property(child, "rect_size", texture_size);
+		undo_redo->add_do_property(child, "size", texture_size);
 	} else if (Object::cast_to<Polygon2D>(child)) {
 	} else if (Object::cast_to<Polygon2D>(child)) {
 		Size2 texture_size = texture->get_size();
 		Size2 texture_size = texture->get_size();
 		Vector<Vector2> list = {
 		Vector<Vector2> list = {
@@ -5612,6 +5612,11 @@ void CanvasItemEditorViewport::_create_nodes(Node *parent, Node *child, String &
 	Transform2D xform = canvas_item_editor->get_canvas_transform();
 	Transform2D xform = canvas_item_editor->get_canvas_transform();
 	Point2 target_position = xform.affine_inverse().xform(p_point);
 	Point2 target_position = xform.affine_inverse().xform(p_point);
 
 
+	// Adjust position for Control and TouchScreenButton
+	if (Object::cast_to<Control>(child) || Object::cast_to<TouchScreenButton>(child)) {
+		target_position -= texture->get_size() / 2;
+	}
+
 	// there's nothing to be used as source position so snapping will work as absolute if enabled
 	// there's nothing to be used as source position so snapping will work as absolute if enabled
 	target_position = canvas_item_editor->snap_point(target_position);
 	target_position = canvas_item_editor->snap_point(target_position);
 	undo_redo->add_do_method(child, "set_global_position", target_position);
 	undo_redo->add_do_method(child, "set_global_position", target_position);