diff --git a/src/app/doc.cpp b/src/app/doc.cpp index d4e636e34..95627d8b8 100644 --- a/src/app/doc.cpp +++ b/src/app/doc.cpp @@ -515,12 +515,9 @@ Doc* Doc::duplicate(DuplicateType type) const // Copy slices for (const Slice *slice : sourceSprite->slices()) { auto sliceCopy = new Slice(*slice); - sliceCopy->setUserData(slice->userData()); - - for (frame_t i(0); i < sourceSprite->totalFrames(); ++i) - sliceCopy->insert(i, *slice->getByFrame(i)); - spriteCopy->slices().add(sliceCopy); + + ASSERT(sliceCopy->owner() == &spriteCopy->slices()); } // Copy color palettes diff --git a/src/doc/keyframes.h b/src/doc/keyframes.h index e6c80a896..cb0c980db 100644 --- a/src/doc/keyframes.h +++ b/src/doc/keyframes.h @@ -8,7 +8,6 @@ #define DOC_KEYFRAMES_H_INCLUDED #pragma once -#include "base/disable_copying.h" #include "doc/frame.h" #include @@ -111,6 +110,11 @@ namespace doc { Keyframes() { } + Keyframes(const Keyframes& other) { + for (const auto& key : other.m_keys) + m_keys.push_back(Key(key.frame(), new T(*key.value()))); + } + void insert(const frame_t frame, T* value) { auto it = getIterator(frame); if (it == end()) @@ -189,9 +193,6 @@ namespace doc { private: List m_keys; - - // Disable operator= - DISABLE_COPYING(Keyframes); }; } // namespace doc diff --git a/src/doc/slice.cpp b/src/doc/slice.cpp index b7f5904ff..e50275e5e 100644 --- a/src/doc/slice.cpp +++ b/src/doc/slice.cpp @@ -42,13 +42,13 @@ Slice::Slice() } Slice::Slice(const Slice& other) - : WithUserData(ObjectType::Slice) + : WithUserData(other) , m_owner(nullptr) , m_name(other.m_name) + , m_keys(other.m_keys) { } - Slice::~Slice() { ASSERT(!m_owner);