diff options
author | Florian Jung <flo@windfisch.org> | 2013-08-16 23:04:08 +0200 |
---|---|---|
committer | Florian Jung <flo@windfisch.org> | 2013-08-16 23:04:08 +0200 |
commit | 4933ccfe7552dc5dbb2921f6583bbeb92dd144b4 (patch) | |
tree | aca8f234f17bbe94fc78c4d1cedd8e8649d2dd1f /muse2/muse/undo.cpp | |
parent | be3b3fef8d787f167b57ebfd700717a02c38570d (diff) |
Parts have their own, non-shared EventList (still WIP!)
removed refcounting in Eventlist
Part::events() is now a const EventList&
chaining parts now a Part:: member function
made Track::events, ::mpevents public instead of using an insane reference-accessor
TODO: need a grouping indicator of clones (like the eventlist pointer was used for)
Diffstat (limited to 'muse2/muse/undo.cpp')
-rw-r--r-- | muse2/muse/undo.cpp | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/muse2/muse/undo.cpp b/muse2/muse/undo.cpp index 5081f86c..747914e1 100644 --- a/muse2/muse/undo.cpp +++ b/muse2/muse/undo.cpp @@ -350,7 +350,7 @@ void Song::doUndo2() removeTrack2(i->track); updateFlags |= SC_TRACK_REMOVED; break; - case UndoOp::DeleteTrack: + case UndoOp::DeleteTrack: // FINDMICHJETZT FIXME TODO: DeletePart on all parts, only empty tracks may be deleted! this removes the necessarity of unchainTrackParts... insertTrack2(i->track, i->trackno); chainTrackParts(i->track, true); @@ -371,15 +371,14 @@ void Song::doUndo2() Part* part = i->part; removePart(part); updateFlags |= SC_PART_REMOVED; - i->part->events()->incARef(-1); - unchainClone(i->part); + Part* i->part->nextClone(); + i->part->unchainClone(); } break; case UndoOp::DeletePart: addPart(i->part); updateFlags |= SC_PART_INSERTED; - i->part->events()->incARef(1); - chainClone(i->part); + i->part->rechainClone(); break; case UndoOp::ModifyPartName: i->part->setName(i->_oldName); @@ -489,14 +488,12 @@ void Song::doRedo2() case UndoOp::AddPart: addPart(i->part); updateFlags |= SC_PART_INSERTED; - i->part->events()->incARef(1); - chainClone(i->part); + i->part->rechainClone(); break; case UndoOp::DeletePart: removePart(i->part); updateFlags |= SC_PART_REMOVED; - i->part->events()->incARef(-1); - unchainClone(i->part); + i->part->unchainClone(); break; case UndoOp::ModifyPartName: i->part->setName(i->_newName); @@ -612,7 +609,7 @@ UndoOp::UndoOp(UndoType type_, Part* part_, unsigned old_len_or_tick, unsigned n new_partlen_or_tick=new_len_or_tick; } -UndoOp::UndoOp(UndoType type_, Event& oev, Event& nev, Part* part_, bool doCtrls_, bool doClones_) +UndoOp::UndoOp(UndoType type_, const Event& oev, const Event& nev, Part* part_, bool doCtrls_, bool doClones_) { assert(type_==ModifyEvent); assert(part_); @@ -625,7 +622,7 @@ UndoOp::UndoOp(UndoType type_, Event& oev, Event& nev, Part* part_, bool doCtrls doClones = doClones_; } -UndoOp::UndoOp(UndoType type_, Event& nev, Part* part_, bool doCtrls_, bool doClones_) +UndoOp::UndoOp(UndoType type_, const Event& nev, Part* part_, bool doCtrls_, bool doClones_) { assert(type_==DeleteEvent || type_==AddEvent); assert(part_); |