From 88370e44d861b0a277327011d91ade247cd366ec Mon Sep 17 00:00:00 2001 From: kleonc <9283098+kleonc@users.noreply.github.com> Date: Wed, 11 Sep 2024 10:45:23 +0200 Subject: [PATCH] Fix undoing "Move tiles" TileMapLayer action when drag/drop areas overlap (cherry picked from commit ab504b31395c2d49747a2d4f1da59258f30de983) --- editor/plugins/tiles/tile_map_layer_editor.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/editor/plugins/tiles/tile_map_layer_editor.cpp b/editor/plugins/tiles/tile_map_layer_editor.cpp index b76e6734140..fbf88cc472a 100644 --- a/editor/plugins/tiles/tile_map_layer_editor.cpp +++ b/editor/plugins/tiles/tile_map_layer_editor.cpp @@ -1366,11 +1366,13 @@ void TileMapLayerEditorTilesPlugin::_stop_dragging() { Vector2i coords; HashMap cells_undo; for (int i = 0; i < selection_used_cells.size(); i++) { - coords = tile_set->map_pattern(top_left, selection_used_cells[i], selection_pattern); - cells_undo[coords] = TileMapCell(drag_modified[coords].source_id, drag_modified[coords].get_atlas_coords(), drag_modified[coords].alternative_tile); coords = tile_set->map_pattern(top_left + offset, selection_used_cells[i], selection_pattern); cells_undo[coords] = TileMapCell(edited_layer->get_cell_source_id(coords), edited_layer->get_cell_atlas_coords(coords), edited_layer->get_cell_alternative_tile(coords)); } + for (int i = 0; i < selection_used_cells.size(); i++) { + coords = tile_set->map_pattern(top_left, selection_used_cells[i], selection_pattern); + cells_undo[coords] = TileMapCell(drag_modified[coords].source_id, drag_modified[coords].get_atlas_coords(), drag_modified[coords].alternative_tile); + } // Build the list of cells to do. HashMap cells_do;