diff -r e1ced2523cad -r 008989bc7d6e src/modeleditcontext.h --- a/src/modeleditcontext.h Tue Nov 02 15:43:57 2021 +0200 +++ b/src/modeleditcontext.h Tue Mar 01 17:00:19 2022 +0200 @@ -26,6 +26,7 @@ template ldraw::Id append(Args&&... args); ldraw::id_t append(std::unique_ptr&& object); + void insertFromState(int position, QByteArray& state); template ldraw::Id insert(int position, Args&&... args); void remove(int position); @@ -35,11 +36,14 @@ -> ldraw::Object::SetPropertyResult; void setObjectPoint(ldraw::id_t id, int pointId, const glm::vec3& value); void invertObject(ldraw::id_t id); + void deserialize(ldraw::id_t id, QDataStream& stream); + ldraw::id_t resolve(int position) const; Model& model(); private: EditContext(Model& model); + void markObjectAsModified(ldraw::id_t id, ldraw::Object* object); friend class Model; - QSet modifiedObjects; + QMap modifiedObjects; Model& storedModel; }; @@ -49,8 +53,8 @@ ldraw::Object* object = this->model().objectAt(id); if (object != nullptr) { + this->markObjectAsModified(id, object); object->setProperty(value); - modifiedObjects.insert(id); } }