From 6a38cd05ae8e6a5bc06bdd6a88a42c2fdc6393f4 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Tue, 13 Nov 2018 20:48:41 +1100 Subject: [PATCH] fixed buggy link function --- panels/timeline.cpp | 19 ++++++------------- project/undo.cpp | 6 +++--- project/undo.h | 5 +++-- 3 files changed, 12 insertions(+), 18 deletions(-) diff --git a/panels/timeline.cpp b/panels/timeline.cpp index 2751746e5..ec14a82d6 100644 --- a/panels/timeline.cpp +++ b/panels/timeline.cpp @@ -1201,25 +1201,18 @@ void Timeline::set_marker() { void Timeline::toggle_links() { LinkCommand* command = new LinkCommand(); + command->s = sequence; for (int i=0;iclips.size();i++) { Clip* c = sequence->clips.at(i); if (c != NULL && is_clip_selected(c, true)) { - command->clips.append(c); + command->clips.append(i); if (c->linked.size() > 0) { command->link = false; // prioritize unlinking - for (int j=0;jlinked.size();j++) { // add links to the command - bool found = false; - Clip* link = sequence->clips.at(c->linked.at(j)); - for (int k=0;kclips.size();k++) { - if (command->clips.at(k) == link) { - found = true; - break; - } - } - if (!found) { - command->clips.append(link); - } + for (int j=0;jlinked.size();j++) { // add links to the command + if (!command->clips.contains(c->linked.at(j))) { + command->clips.append(c->linked.at(j)); + } } } } diff --git a/project/undo.cpp b/project/undo.cpp index 4205e70bf..8df611288 100644 --- a/project/undo.cpp +++ b/project/undo.cpp @@ -1054,7 +1054,7 @@ LinkCommand::LinkCommand() : link(true), old_project_changed(mainWindow->isWindo void LinkCommand::undo() { for (int i=0;iclips.at(clips.at(i)); if (link) { c->linked.clear(); } else { @@ -1067,11 +1067,11 @@ void LinkCommand::undo() { void LinkCommand::redo() { old_links.clear(); for (int i=0;iclips.at(clips.at(i)); if (link) { for (int j=0;jlinked.append(j); + c->linked.append(clips.at(j)); } } } else { diff --git a/project/undo.h b/project/undo.h index 1e5197d6c..d770a5c4c 100644 --- a/project/undo.h +++ b/project/undo.h @@ -231,8 +231,9 @@ class LinkCommand : public QUndoCommand { public: LinkCommand(); void undo(); - void redo(); - QVector clips; + void redo(); + Sequence* s; + QVector clips; bool link; private: QVector< QVector > old_links;