timeline: fix issue where transitions wouldn't reconnect on alt+drag
This commit is contained in:
@@ -718,6 +718,7 @@ void PointerTool::FinishDrag(TimelineViewMouseEvent *event)
|
||||
|
||||
if (!relinks.empty()) {
|
||||
for (auto it=relinks.cbegin(); it!=relinks.cend(); it++) {
|
||||
// Re-connect links on duplicate clips
|
||||
for (auto jt=it.key()->links().cbegin(); jt!=it.key()->links().cend(); jt++) {
|
||||
Node *link = *jt;
|
||||
Node *copy_link = relinks.value(link);
|
||||
@@ -725,6 +726,24 @@ void PointerTool::FinishDrag(TimelineViewMouseEvent *event)
|
||||
command->add_child(new NodeLinkCommand(it.value(), copy_link, true));
|
||||
}
|
||||
}
|
||||
|
||||
// Re-connect transitions where applicable
|
||||
if (ClipBlock *og_clip = dynamic_cast<ClipBlock *>(it.key())) {
|
||||
ClipBlock *cp_clip = static_cast<ClipBlock *>(it.value());
|
||||
|
||||
TransitionBlock *og_in_transition = og_clip->in_transition();
|
||||
TransitionBlock *og_out_transition = og_clip->out_transition();
|
||||
|
||||
if (og_in_transition && relinks.contains(og_in_transition)) {
|
||||
TransitionBlock *cp_in_transition = static_cast<TransitionBlock *>(relinks.value(og_in_transition));
|
||||
command->add_child(new NodeEdgeAddCommand(cp_clip, NodeInput(cp_in_transition, TransitionBlock::kInBlockInput)));
|
||||
}
|
||||
|
||||
if (og_out_transition && relinks.contains(og_out_transition)) {
|
||||
TransitionBlock *cp_out_transition = static_cast<TransitionBlock *>(relinks.value(og_out_transition));
|
||||
command->add_child(new NodeEdgeAddCommand(cp_clip, NodeInput(cp_out_transition, TransitionBlock::kOutBlockInput)));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user