fixed buggy link function
This commit is contained in:
+6
-13
@@ -1201,25 +1201,18 @@ void Timeline::set_marker() {
|
||||
|
||||
void Timeline::toggle_links() {
|
||||
LinkCommand* command = new LinkCommand();
|
||||
command->s = sequence;
|
||||
for (int i=0;i<sequence->clips.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;j<c->linked.size();j++) { // add links to the command
|
||||
bool found = false;
|
||||
Clip* link = sequence->clips.at(c->linked.at(j));
|
||||
for (int k=0;k<command->clips.size();k++) {
|
||||
if (command->clips.at(k) == link) {
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!found) {
|
||||
command->clips.append(link);
|
||||
}
|
||||
for (int j=0;j<c->linked.size();j++) { // add links to the command
|
||||
if (!command->clips.contains(c->linked.at(j))) {
|
||||
command->clips.append(c->linked.at(j));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+3
-3
@@ -1054,7 +1054,7 @@ LinkCommand::LinkCommand() : link(true), old_project_changed(mainWindow->isWindo
|
||||
|
||||
void LinkCommand::undo() {
|
||||
for (int i=0;i<clips.size();i++) {
|
||||
Clip* c = clips.at(i);
|
||||
Clip* c = s->clips.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;i<clips.size();i++) {
|
||||
Clip* c = clips.at(i);
|
||||
Clip* c = s->clips.at(clips.at(i));
|
||||
if (link) {
|
||||
for (int j=0;j<clips.size();j++) {
|
||||
if (i != j) {
|
||||
c->linked.append(j);
|
||||
c->linked.append(clips.at(j));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
||||
+3
-2
@@ -231,8 +231,9 @@ class LinkCommand : public QUndoCommand {
|
||||
public:
|
||||
LinkCommand();
|
||||
void undo();
|
||||
void redo();
|
||||
QVector<Clip*> clips;
|
||||
void redo();
|
||||
Sequence* s;
|
||||
QVector<int> clips;
|
||||
bool link;
|
||||
private:
|
||||
QVector< QVector<int> > old_links;
|
||||
|
||||
Reference in New Issue
Block a user