mirror of
https://github.com/aseprite/aseprite.git
synced 2025-03-16 10:20:50 +00:00
Fix several bugs copying name/userData when we clone tilesets
Found on #3630 Co-authored-by: Gaspar Capello <gaspar@igara.com>
This commit is contained in:
parent
5a5ac179cd
commit
ea17eae524
@ -125,6 +125,8 @@ protected:
|
||||
|
||||
auto newTileset = new doc::Tileset(sprite(), newGrid, tileset->size());
|
||||
doc::tile_index idx = 0;
|
||||
newTileset->setName(tileset->name());
|
||||
newTileset->setUserData(tileset->userData());
|
||||
for (doc::ImageRef tileImg : *tileset) {
|
||||
if (idx != 0) {
|
||||
doc::ImageRef newTileImg(
|
||||
|
@ -1,5 +1,5 @@
|
||||
// Aseprite
|
||||
// Copyright (C) 2019-2020 Igara Studio S.A.
|
||||
// Copyright (C) 2019-2022 Igara Studio S.A.
|
||||
// Copyright (C) 2001-2018 David Capello
|
||||
//
|
||||
// This program is distributed under the terms of
|
||||
@ -508,9 +508,7 @@ Tileset* ExpandCelCanvas::getDestTileset()
|
||||
const Tileset* srcTileset = static_cast<LayerTilemap*>(m_layer)->tileset();
|
||||
|
||||
ASSERT(srcTileset);
|
||||
m_dstTileset.reset(new Tileset(m_sprite,
|
||||
srcTileset->grid(),
|
||||
srcTileset->size()));
|
||||
m_dstTileset.reset(Tileset::MakeCopyWithoutImages(srcTileset));
|
||||
copySourceTilestToDestTileset();
|
||||
}
|
||||
return m_dstTileset.get();
|
||||
|
@ -45,13 +45,21 @@ Tileset::Tileset(Sprite* sprite,
|
||||
}
|
||||
|
||||
// static
|
||||
Tileset* Tileset::MakeCopyWithSameImages(const Tileset* tileset)
|
||||
Tileset* Tileset::MakeCopyWithoutImages(const Tileset* tileset)
|
||||
{
|
||||
std::unique_ptr<Tileset> copy(
|
||||
new Tileset(tileset->sprite(),
|
||||
tileset->grid(),
|
||||
tileset->size()));
|
||||
copy->setName(tileset->name());
|
||||
copy->setUserData(tileset->userData());
|
||||
return copy.release();
|
||||
}
|
||||
|
||||
// static
|
||||
Tileset* Tileset::MakeCopyWithSameImages(const Tileset* tileset)
|
||||
{
|
||||
std::unique_ptr<Tileset> copy(MakeCopyWithoutImages(tileset));
|
||||
for (tile_index ti=0; ti<copy->size(); ++ti) {
|
||||
ImageRef image = tileset->get(ti);
|
||||
ASSERT(image);
|
||||
@ -63,11 +71,7 @@ Tileset* Tileset::MakeCopyWithSameImages(const Tileset* tileset)
|
||||
// static
|
||||
Tileset* Tileset::MakeCopyCopyingImages(const Tileset* tileset)
|
||||
{
|
||||
std::unique_ptr<Tileset> copy(
|
||||
new Tileset(tileset->sprite(),
|
||||
tileset->grid(),
|
||||
tileset->size()));
|
||||
copy->setName(tileset->name());
|
||||
std::unique_ptr<Tileset> copy(MakeCopyWithoutImages(tileset));
|
||||
for (tile_index ti=0; ti<copy->size(); ++ti) {
|
||||
ImageRef image = tileset->get(ti);
|
||||
ASSERT(image);
|
||||
|
@ -36,6 +36,7 @@ namespace doc {
|
||||
const Grid& grid,
|
||||
const tileset_index ntiles);
|
||||
|
||||
static Tileset* MakeCopyWithoutImages(const Tileset* tileset);
|
||||
static Tileset* MakeCopyWithSameImages(const Tileset* tileset);
|
||||
static Tileset* MakeCopyCopyingImages(const Tileset* tileset);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user