restored setting to play past the end of the sequence

This commit is contained in:
itsmattkc
2019-03-23 01:41:05 +11:00
parent bd4b4f4e18
commit b8331ce4b9
5 changed files with 26 additions and 2 deletions
+6
View File
@@ -256,6 +256,8 @@ void PreferencesDialog::accept() {
olive::CurrentConfig.use_native_menu_styling = native_menus->isChecked();
#endif
olive::CurrentConfig.auto_seek_to_beginning = auto_seek_to_beginning->isChecked();
// Check if the thumbnail or waveform icon
if (olive::CurrentConfig.thumbnail_resolution != thumbnail_res_spinbox->value()
|| olive::CurrentConfig.waveform_resolution != waveform_res_spinbox->value()) {
@@ -560,6 +562,10 @@ void PreferencesDialog::setup_ui() {
add_default_effects_to_clips->setChecked(olive::CurrentConfig.add_default_effects_to_clips);
behavior_tab_layout->addWidget(add_default_effects_to_clips);
auto_seek_to_beginning = new QCheckBox(tr("Automatically Seek to the Beginning When Playing at the End of a Sequence"));
auto_seek_to_beginning->setChecked(olive::CurrentConfig.auto_seek_to_beginning);
behavior_tab_layout->addWidget(auto_seek_to_beginning);
// Appearance
QWidget* appearance_tab = new QWidget(this);
tabWidget->addTab(appearance_tab, tr("Appearance"));
+5
View File
@@ -248,6 +248,11 @@ private:
*/
QCheckBox* add_default_effects_to_clips;
/**
* @brief UI widget for enabling/disabling Config::auto_seek_to_beginning
*/
QCheckBox* auto_seek_to_beginning;
/**
* @brief UI widget for selecting the current UI style
*/
+5
View File
@@ -64,6 +64,7 @@ Config::Config()
upcoming_queue_type(olive::FRAME_QUEUE_TYPE_SECONDS),
loop(false),
seek_also_selects(false),
auto_seek_to_beginning(true),
effect_textbox_lines(3),
use_software_fallback(false),
center_timeline_timecodes(true),
@@ -179,6 +180,9 @@ void Config::load(QString path) {
} else if (stream.name() == "SeekAlsoSelects") {
stream.readNext();
seek_also_selects = (stream.text() == "1");
} else if (stream.name() == "AutoSeekToBeginning") {
stream.readNext();
auto_seek_to_beginning = (stream.text() == "1");
} else if (stream.name() == "CSSPath") {
stream.readNext();
css_path = stream.text().toString();
@@ -271,6 +275,7 @@ void Config::save(QString path) {
stream.writeTextElement("UpcomingFrameQueueType", QString::number(upcoming_queue_type));
stream.writeTextElement("Loop", QString::number(loop));
stream.writeTextElement("SeekAlsoSelects", QString::number(seek_also_selects));
stream.writeTextElement("AutoSeekToBeginning", QString::number(auto_seek_to_beginning));
stream.writeTextElement("CSSPath", css_path);
stream.writeTextElement("EffectTextboxLines", QString::number(effect_textbox_lines));
stream.writeTextElement("UseSoftwareFallback", QString::number(use_software_fallback));
+7
View File
@@ -413,6 +413,13 @@ struct Config {
*/
bool seek_also_selects;
/**
* @brief Automatically seek to the beginning of a sequence if the user plays beyond the end of it
*
* TRUE if this behavior should be enabled.
*/
bool auto_seek_to_beginning;
/**
* @brief CSS Path
*
+3 -2
View File
@@ -402,7 +402,7 @@ void Viewer::play(bool in_to_out) {
if (!is_recording_cued()
&& playback_speed >= 0
&& (playing_in_to_out
|| seq->playhead >= sequence_end_frame
|| (olive::CurrentConfig.auto_seek_to_beginning && seq->playhead >= sequence_end_frame)
|| (seek_to_in && seq->playhead >= seq->workarea_out))) {
seek(seek_to_in ? seq->workarea_in : 0);
}
@@ -890,7 +890,8 @@ void Viewer::timer_update() {
pause();
}
} else if (playback_speed > 0) {
if (seq->playhead >= seq->getEndFrame()) {
long end_frame = seq->getEndFrame();
if ((olive::CurrentConfig.auto_seek_to_beginning || previous_playhead < end_frame) && seq->playhead >= end_frame) {
pause();
}
if (seq->using_workarea && seq->playhead >= seq->workarea_out) {