1
0
Fork 0
mirror of https://github.com/Orama-Interactive/Pixelorama.git synced 2025-02-20 12:33:14 +00:00

Do not clear content from selection in selected cels when moving if Alt has been pressed beforehand

This is about Alt + mouse click when moving a selection. See https://github.com/Orama-Interactive/Pixelorama/issues/129#issuecomment-756799706 for more info
This commit is contained in:
Manolis Papadeas 2021-06-23 20:38:17 +03:00
parent 5b74a4292d
commit f5d07e660d
2 changed files with 10 additions and 6 deletions

View file

@ -85,6 +85,7 @@ func draw_start(position : Vector2) -> void:
_move_content = true
if Tools.alt: # Move the selection without cutting it from the original position / makes a quick copy of it
selection_node.transform_content_confirm()
selection_node.clear_in_selected_cels = false
selection_node.transform_content_start()
if Tools.alt: # Continuation of the above
var cel_image : Image = project.frames[project.current_frame].cels[project.current_layer].image

View file

@ -63,6 +63,7 @@ var gizmos := [] # Array of Gizmos
var dragged_gizmo : Gizmo = null
var prev_angle := 0
var mouse_pos_on_gizmo_drag := Vector2.ZERO
var clear_in_selected_cels := true
onready var marching_ants_outline : Sprite = $MarchingAntsOutline
@ -470,7 +471,7 @@ func transform_content_confirm() -> void:
var cel_image : Image = project.frames[frame].cels[layer].image
var src : Image = preview_image
if not is_pasting and not (frame == project.current_frame and layer == project.current_layer):
src = get_selected_image(cel_image)
src = get_selected_image(cel_image, clear_in_selected_cels)
src.resize(big_bounding_rectangle.size.x, big_bounding_rectangle.size.y, Image.INTERPOLATE_NEAREST)
if temp_rect.size.x < 0:
src.flip_x()
@ -488,6 +489,7 @@ func transform_content_confirm() -> void:
original_bitmap = BitMap.new()
is_moving_content = false
is_pasting = false
clear_in_selected_cels = true
update()
@ -766,7 +768,7 @@ func get_preview_image() -> void:
Global.canvas.update_texture(project.current_layer)
func get_selected_image(cel_image : Image) -> Image:
func get_selected_image(cel_image : Image, clear := true) -> Image:
var project : Project = Global.current_project
var image := Image.new()
image = cel_image.get_rect(original_big_bounding_rectangle)
@ -782,9 +784,10 @@ func get_selected_image(cel_image : Image) -> Image:
if image.is_invisible():
return image
var clear_image := Image.new()
clear_image.create(image.get_width(), image.get_height(), false, Image.FORMAT_RGBA8)
cel_image.blit_rect_mask(clear_image, image, Rect2(Vector2.ZERO, Global.current_project.selection_bitmap.get_size()), original_big_bounding_rectangle.position)
Global.canvas.update_texture(project.current_layer)
if clear:
var clear_image := Image.new()
clear_image.create(image.get_width(), image.get_height(), false, Image.FORMAT_RGBA8)
cel_image.blit_rect_mask(clear_image, image, Rect2(Vector2.ZERO, Global.current_project.selection_bitmap.get_size()), original_big_bounding_rectangle.position)
Global.canvas.update_texture(project.current_layer)
return image