nested sequence enhancements
This commit is contained in:
@@ -1494,6 +1494,9 @@ void MainWindow::nest() {
|
||||
s->clips.append(copy);
|
||||
}
|
||||
|
||||
// relink clips in new nested sequences
|
||||
panel_timeline->relink_clips_using_ids(selected_clips, s->clips);
|
||||
|
||||
// add sequence to project
|
||||
Media* m = panel_project->new_sequence(ca, s, false, nullptr);
|
||||
|
||||
|
||||
@@ -61,10 +61,15 @@ void open_clip(Clip* clip, bool multithreaded) {
|
||||
}
|
||||
} else {
|
||||
clip->open = true;
|
||||
clip->finished_opening = true;
|
||||
}
|
||||
}
|
||||
|
||||
void close_clip(Clip* clip, bool wait) {
|
||||
// qDebug() << "closing" << clip->name;
|
||||
|
||||
clip->finished_opening = false;
|
||||
|
||||
// destroy opengl texture in main thread
|
||||
if (clip->texture != nullptr) {
|
||||
delete clip->texture;
|
||||
@@ -94,8 +99,9 @@ void close_clip(Clip* clip, bool wait) {
|
||||
close_clip_worker(clip);
|
||||
}
|
||||
} else {
|
||||
if (clip->media != nullptr && clip->media->get_type() == MEDIA_TYPE_SEQUENCE)
|
||||
if (clip->media != nullptr && clip->media->get_type() == MEDIA_TYPE_SEQUENCE) {
|
||||
closeActiveClips(clip->media->to_sequence());
|
||||
}
|
||||
|
||||
clip->open = false;
|
||||
}
|
||||
@@ -385,8 +391,8 @@ void closeActiveClips(Sequence *s) {
|
||||
if (c != nullptr) {
|
||||
if (c->media != nullptr && c->media->get_type() == MEDIA_TYPE_SEQUENCE) {
|
||||
closeActiveClips(c->media->to_sequence());
|
||||
if (c->open) close_clip(c, true);
|
||||
} else if (c->open) {
|
||||
if (c->finished_opening) close_clip(c, true);
|
||||
} else if (c->finished_opening) {
|
||||
close_clip(c, true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -169,7 +169,7 @@ GLuint compose_sequence(Viewer* viewer,
|
||||
}
|
||||
clip_is_active = true;
|
||||
if (c->track >= 0) audio_track_count++;
|
||||
} else if (c->open) {
|
||||
} else if (c->finished_opening) {
|
||||
close_clip(c, false);
|
||||
}
|
||||
} else {
|
||||
@@ -181,7 +181,7 @@ GLuint compose_sequence(Viewer* viewer,
|
||||
if (is_clip_active(c, playhead)) {
|
||||
if (!c->open) open_clip(c, !rendering);
|
||||
clip_is_active = true;
|
||||
} else if (c->open) {
|
||||
} else if (c->finished_opening) {
|
||||
close_clip(c, false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
#include "dialogs/newsequencedialog.h"
|
||||
#include "mainwindow.h"
|
||||
#include "ui/rectangleselect.h"
|
||||
#include "playback/playback.h"
|
||||
#include "debug.h"
|
||||
|
||||
#include "project/effect.h"
|
||||
@@ -548,6 +549,14 @@ void TimelineWidget::mouseDoubleClickEvent(QMouseEvent *event) {
|
||||
sequence->selections.append(s);
|
||||
update_ui(false);
|
||||
}
|
||||
} else if (panel_timeline->tool == TIMELINE_TOOL_POINTER) {
|
||||
int clip_index = getClipIndexFromCoords(panel_timeline->cursor_frame, panel_timeline->cursor_track);
|
||||
if (clip_index >= 0) {
|
||||
Clip* c = sequence->clips.at(clip_index);
|
||||
if (c->media != nullptr && c->media->get_type() == MEDIA_TYPE_SEQUENCE) {
|
||||
set_sequence(c->media->to_sequence());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user