mirror of
https://github.com/aseprite/aseprite.git
synced 2024-10-04 05:50:15 +00:00
When copy and paste layers between documents, expand the number of total frames of the destination sprite if it's needed
This commit is contained in:
parent
dde7915c24
commit
42399df2c8
@ -311,6 +311,16 @@ void clipboard::paste()
|
||||
std::vector<Layer*> src_layers;
|
||||
src_doc->sprite()->getLayersList(src_layers);
|
||||
|
||||
// Expand frames of dst_doc if it's needed.
|
||||
FrameNumber maxFrame(0);
|
||||
for (LayerIndex i = range.layerBegin(); i <= range.layerEnd(); ++i) {
|
||||
Cel* lastCel = static_cast<LayerImage*>(src_layers[i])->getLastCel();
|
||||
if (maxFrame < lastCel->frame())
|
||||
maxFrame = lastCel->frame();
|
||||
}
|
||||
if (dst_doc->sprite()->totalFrames() < maxFrame.next())
|
||||
dst_doc->getApi().setTotalFrames(dst_spr, maxFrame.next());
|
||||
|
||||
for (LayerIndex i = range.layerBegin(); i <= range.layerEnd(); ++i) {
|
||||
LayerImage* new_layer = new LayerImage(dst_spr);
|
||||
dst_doc->getApi().addLayer(
|
||||
|
@ -146,6 +146,14 @@ void LayerImage::getCels(CelList& cels) const
|
||||
cels.push_back(*it);
|
||||
}
|
||||
|
||||
Cel* LayerImage::getLastCel() const
|
||||
{
|
||||
if (!m_cels.empty())
|
||||
return m_cels.back();
|
||||
else
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void LayerImage::addCel(Cel *cel)
|
||||
{
|
||||
CelIterator it = getCelBegin();
|
||||
|
@ -111,8 +111,8 @@ namespace raster {
|
||||
void moveCel(Cel *cel, FrameNumber frame);
|
||||
const Cel* getCel(FrameNumber frame) const;
|
||||
Cel* getCel(FrameNumber frame);
|
||||
|
||||
void getCels(CelList& cels) const OVERRIDE;
|
||||
Cel* getLastCel() const;
|
||||
|
||||
void configureAsBackground();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user