diff --git a/src/Autoload/DrawingAlgos.gd b/src/Autoload/DrawingAlgos.gd index 55deeaa1a..8f1fdcc3d 100644 --- a/src/Autoload/DrawingAlgos.gd +++ b/src/Autoload/DrawingAlgos.gd @@ -723,7 +723,14 @@ func resize_canvas(width: int, height: int, offset_x: int, offset_y: int) -> voi ) resized.convert_rgb_to_indexed() if cel is CelTileMap: - (cel as CelTileMap).serialize_undo_data_source_image(resized, redo_data, undo_data) + var tilemap_cel := cel as CelTileMap + var skip_tileset := ( + offset_x % tilemap_cel.tileset.tile_size.x == 0 + and offset_y % tilemap_cel.tileset.tile_size.y == 0 + ) + tilemap_cel.serialize_undo_data_source_image( + resized, redo_data, undo_data, skip_tileset + ) resized.add_data_to_dictionary(redo_data, cel_image) cel_image.add_data_to_dictionary(undo_data) diff --git a/src/Classes/Cels/CelTileMap.gd b/src/Classes/Cels/CelTileMap.gd index ecf5a7f68..fe8fa6916 100644 --- a/src/Classes/Cels/CelTileMap.gd +++ b/src/Classes/Cels/CelTileMap.gd @@ -305,13 +305,17 @@ func serialize_undo_data() -> Dictionary: ## ([param source_image]) we want to store to the undo/redo stack ## is not the same as [member image]. This method also handles the resizing logic for undo/redo. func serialize_undo_data_source_image( - source_image: ImageExtended, redo_data: Dictionary, undo_data: Dictionary + source_image: ImageExtended, + redo_data: Dictionary, + undo_data: Dictionary, + skip_tileset_resize := false ) -> void: undo_data[self] = serialize_undo_data() if source_image.get_size() != image.get_size(): undo_data[self]["resize"] = true _resize_cells(source_image.get_size()) - tileset.handle_project_resize(self) + if not skip_tileset_resize: + tileset.handle_project_resize(self) var tile_editing_mode := TileSetPanel.tile_editing_mode if tile_editing_mode == TileSetPanel.TileEditingMode.MANUAL: tile_editing_mode = TileSetPanel.TileEditingMode.AUTO